1 回答

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以輕松地在 0 和 1 之間重新縮放 pandas 系列,并將其用作參數(shù),?rgba(red,green,blue,opacity)
例如圖中某個(gè)標(biāo)記的不透明度在 0 和 1 之間color='rgba(100,0,255,'+opac+')'
。opac
標(biāo)記的顏色屬性對(duì)于任何 都是唯一的go.Scatter()
,因此您必須為每個(gè)點(diǎn)添加一個(gè)唯一的軌跡。然后,同時(shí),您可以為標(biāo)記的輪廓設(shè)置顏色(如果您愿意的話,還可以設(shè)置不透明度)使用marker=dict(line=dict(color='rgba(100,0,255,1)'))
在下圖中,我將輪廓顏色設(shè)置為“rgba(100,0,255,1)”,標(biāo)記填充的不透明度根據(jù)上述邏輯變化。這樣,最高值將顯示為完全“填充”的標(biāo)記:
但是你也可以設(shè)置一個(gè)定義更明確的行,例如,line=dict(color='rgba(0,0,0,1)', width = 2)
得到這樣的東西:
現(xiàn)在您可以嘗試所有rgba參數(shù)來找到您喜歡的顏色。
完整代碼:
# imports
import plotly.graph_objects as go
import pandas as pd
import numpy as np
# sample data in the form of an hourlt
np.random.seed(1234)
tseries = pd.date_range("01.01.2020", "01.04.2020", freq="H")
data = np.random.randint(-100, 100, size=(len(tseries), 3))
df = pd.DataFrame(data=data)
df.columns=list('ABC')
df['C_scaled'] = df['C'].max()/df['C']
df['C_scaled'] = (df['C']-df['C'].min())/(df['C'].max()-df['C'].min())
df = df.sort_values(by=['C_scaled'], ascending=False)
fig=go.Figure()
for ix in df.index:
? ? d = df.iloc[ix]
? ? opac = str(d['C_scaled'])
? ? fig.add_trace(go.Scatter(x=[d['A']], y=[d['B']], showlegend=False,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?marker=dict(size = 14, color='rgba(100,0,255,'+opac+')',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?line=dict(color='rgba(0,0,0,1)', width = 2)))
? ? ? ? ? ? ? ? ? ? ? ? ? ? )
? ??
fig.show()
編輯: Hoverinfo 的副作用
只需包含以下內(nèi)容即可編輯 hoverinfo,以便在懸停時(shí)始終顯示 x 和 y 值到 closeset 值:
fig.update_layout(hovermode="x")
fig.update_traces(hoverinfo = 'x+y')
添加回答
舉報(bào)