如何从 fig.data() 知道绘图类型?
how to know plot type from fig.data()?
我正在使用子图,第一个子图是热图,第二个子图是线图。绘图后,我如何知道它的绘图类型(热图或线图)?我正在使用 fig.data 来引用其数据,是否可以从 fig.data() 获取绘图类型?感谢您的帮助。
这是我的代码:
fig = make_subplots(rows=2, cols=1, vertical_spacing=0.05,
specs=[[{"secondary_y": False}],[{"secondary_y": True}],[{"secondary_y":False}]],
subplot_titles=('DTS Long Term Heatmap for '+wellname,
'Well Production of '+wellname,
'Steam Injection of its Nearby Injectors'),
shared_xaxes=True,
row_heights=[0.6, 0.2,0.2], # new from top to bottom
)
trace0 = go.Heatmap()
data = [trace0]
fig.add_trace(trace0,row=1, col=1)
fig.add_trace(go.Scatter(
x=df.index,
y=df.values,
mode="lines",
line={"color": 'black'}, #"color": "#035593"
name='zero line',
legendgroup = '2',
showlegend=False,
),
row=row,
col=1,
secondary_y=False
)
for i, d in enumerate(fig.data):
if d.name==key_1:
legendgroup='2'
row=2
secondary_y=False
elif d.name==key_2:
legendgroup='2'
row=2
secondary_y=True
fig.add_scatter(x=[d.x[-1]], y = [d.y[-1]],
mode = 'markers+text',
text = f'{d.y[-1]:.2f}',
textfont = dict(color=d.line.color),
textposition='middle right',
marker = dict(color = d.line.color, size = 12),
legendgroup = legendgroup, #d.name,
secondary_y=secondary_y,
row=row,col=1,
showlegend=False)
是的,你很接近。您可以通过访问 .type
属性来检查 fig.data
中每个跟踪的类型,如果您使用循环,它看起来像这样:
for trace in fig.data:
print(trace.type)
例如:
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(
rows=2, cols=2,
specs=[[{"type": "xy"}, {"type": "polar"}],
[{"type": "domain"}, {"type": "scene"}]],
)
fig.add_trace(go.Bar(y=[2, 3, 1]),
row=1, col=1)
fig.add_trace(go.Barpolar(theta=[0, 45, 90], r=[2, 3, 1]),
row=1, col=2)
fig.add_trace(go.Pie(values=[2, 3, 1]),
row=2, col=1)
fig.add_trace(go.Scatter3d(x=[2, 3, 1], y=[0, 0, 0],
z=[0.5, 1, 2], mode="lines"),
row=2, col=2)
然后下面显示每个trace类型的名字
>>> for trace in fig.data:
print(trace.type)
bar
barpolar
pie
scatter3d
我正在使用子图,第一个子图是热图,第二个子图是线图。绘图后,我如何知道它的绘图类型(热图或线图)?我正在使用 fig.data 来引用其数据,是否可以从 fig.data() 获取绘图类型?感谢您的帮助。
这是我的代码:
fig = make_subplots(rows=2, cols=1, vertical_spacing=0.05,
specs=[[{"secondary_y": False}],[{"secondary_y": True}],[{"secondary_y":False}]],
subplot_titles=('DTS Long Term Heatmap for '+wellname,
'Well Production of '+wellname,
'Steam Injection of its Nearby Injectors'),
shared_xaxes=True,
row_heights=[0.6, 0.2,0.2], # new from top to bottom
)
trace0 = go.Heatmap()
data = [trace0]
fig.add_trace(trace0,row=1, col=1)
fig.add_trace(go.Scatter(
x=df.index,
y=df.values,
mode="lines",
line={"color": 'black'}, #"color": "#035593"
name='zero line',
legendgroup = '2',
showlegend=False,
),
row=row,
col=1,
secondary_y=False
)
for i, d in enumerate(fig.data):
if d.name==key_1:
legendgroup='2'
row=2
secondary_y=False
elif d.name==key_2:
legendgroup='2'
row=2
secondary_y=True
fig.add_scatter(x=[d.x[-1]], y = [d.y[-1]],
mode = 'markers+text',
text = f'{d.y[-1]:.2f}',
textfont = dict(color=d.line.color),
textposition='middle right',
marker = dict(color = d.line.color, size = 12),
legendgroup = legendgroup, #d.name,
secondary_y=secondary_y,
row=row,col=1,
showlegend=False)
是的,你很接近。您可以通过访问 .type
属性来检查 fig.data
中每个跟踪的类型,如果您使用循环,它看起来像这样:
for trace in fig.data:
print(trace.type)
例如:
from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(
rows=2, cols=2,
specs=[[{"type": "xy"}, {"type": "polar"}],
[{"type": "domain"}, {"type": "scene"}]],
)
fig.add_trace(go.Bar(y=[2, 3, 1]),
row=1, col=1)
fig.add_trace(go.Barpolar(theta=[0, 45, 90], r=[2, 3, 1]),
row=1, col=2)
fig.add_trace(go.Pie(values=[2, 3, 1]),
row=2, col=1)
fig.add_trace(go.Scatter3d(x=[2, 3, 1], y=[0, 0, 0],
z=[0.5, 1, 2], mode="lines"),
row=2, col=2)
然后下面显示每个trace类型的名字
>>> for trace in fig.data:
print(trace.type)
bar
barpolar
pie
scatter3d