簡體   English   中英

Plotly Strip plot - 按連續比例着色

[英]Plotly Strip plot - color by continuous scale

我想使用plotly.express.strip來顯​​示我的數據點的分布。 問題是我還想根據每個數據點的值對其進行着色。 例如,取自 Plotly 的文檔:

import plotly.express as px

df = px.data.tips()
fig = px.strip(df, x="total_bill", y="day")
fig.show()

由此可見: 情節剝離示例 但我希望這些點使用連續色標按“total_bill”數量着色。

根據我的研究,我還沒有找到一種方法來使用這個特定的情節(即我不能使用 px.scatter)。

有沒有辦法做到這一點? 謝謝

你需要一個抖動。 我將偽抖動函數應用於 y 軸以創建散點圖。 抖動功能的靈感來自此頁面的內容 它可能與原始的圖形邏輯不同。 起初,我通過在循環過程中提取一周中的天數來編寫圖表,但由於色標重復,我描述了一周中的所有天並僅添加了周六的色標,因為周六包含最大值。

import plotly.graph_objects as go
import plotly.express as px
import numpy as np

df = px.data.tips()
N = len(df)

fig = go.Figure()

dfs = df.query('day == "Sun"')
fig.add_trace(go.Scatter(
    x=dfs['total_bill'], 
    y=0 + np.random.rand(N) * 0.2,
    mode='markers',
    marker=dict(
        size=9,
        color=dfs['total_bill'],
    ),
    name='Sun',
))

dfst = df.query('day == "Sat"')
fig.add_trace(go.Scatter(
    x=dfst['total_bill'], 
    y=1 + np.random.rand(N) * 0.2,
    mode='markers',
    marker=dict(
        size=9,
        color=dfst['total_bill'],
        colorbar=dict(
            title='total_bill',
        ),
        colorscale='Plasma'
    ),
    name='Sat',
))

dfth = df.query('day == "Thur"')
fig.add_trace(go.Scatter(
    x=dfth['total_bill'], 
    y=2 + np.random.rand(N) * 0.2,
    mode='markers',
    marker=dict(
        size=9,
        color=dfth['total_bill'],
    ),
    name='Thur',
))

dff = df.query('day == "Fri"')
fig.add_trace(go.Scatter(
    x=dff['total_bill'], 
    y=3 + np.random.rand(N) * 0.2,
    mode='markers',
    marker=dict(
        size=9,
        color=dff['total_bill'],
    ),
    name='Fri',
))

fig.update_layout(showlegend=False, coloraxis_showscale=True)
fig.update_yaxes(tickvals=[0,1,2,3], ticktext=['Sun','Sat','Thur','Fri'])
fig.show() 

在此處輸入圖像描述

您可以使用 Plotly 或 Seaborn

情節

我在這里使用灰色(白色到黑色),但你可以選擇有意義的。 檢查 RGB 值... n_colors會將顏色分成組。 使用了 4 天,因為這里有 4 個獨特的日子

代碼:

import plotly.express as px
from plotly.colors import n_colors

df = px.data.tips()
fig = px.strip(df, x="total_bill", y="day", color="day", color_discrete_sequence = n_colors('rgb(0, 0, 0)', 'rgb(255, 255, 255)', 4, colortype = 'rgb'))

輸出

在此處輸入圖像描述

海博恩

在 seaborn 中實際上更容易,因為您可以使用palette並使用jitter=True ,您應該很高興

代碼:

import seaborn as sns
sns.stripplot(data = df, x='total_bill', y = 'day', palette = 'gray', jitter=True)

輸出

在此處輸入圖像描述

選項 3 - 連續 X 軸如果您需要 X 軸上的漸變,則需要將hue='total_bill'添加到 sns 圖中。 下面的代碼...我刪除了圖例,因為它會顯示所有顏色,您可能不需要

import seaborn as sns
sns.stripplot(data = df, x='total_bill', y = 'day', hue = 'total_bill', palette = 'gray', jitter=True)
plt.legend([],[], frameon=False)

輸出

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM