Plotly: 如何使用 px.line 更改线条样式?

7

我有一个类似于以下的数据框:

>>>Hour    Level   value   
0  7        H      1.435
1  7        M      3.124
2  7        L      5.578
3  8        H      0.435
4  8        M      2.124
5  8        L      4.578

我希望在Plotly中创建折线图,根据“level”列的不同值使用不同的线条样式。目前,我已经有了默认的线条样式的折线图。
import plotly.graph_objects as go
fig = px.line(group, x="Hour", y="value",color='level', title='Graph',category_orders={'level':['H','M','L']}
             ,color_discrete_map={'H':'royalblue','M':'orange','L':'firebrick'})

fig.show()

enter image description here

我希望能够控制每个层级的线条样式。 到目前为止,我发现唯一的方法是为每个“层级”添加,但是可以使用以下方式使用add_trace:
# Create and style traces
fig.add_trace(go.Scatter(x="Hour", y="value", name='H',
                         line=dict(dash='dash')))
fig.add_trace(go.Scatter(x="Hour", y="value", name = 'M',
                         line=dict(dash='dot')))
fig.show()

但我一直收到这个错误提示:

ValueError: Invalid value of type 'builtins.str' received for the 'x' property of scatter Received value: 'Hour'

The 'x' property is an array that may be specified as a tuple,
list, numpy array, or pandas Series
我的最终目标是控制图表中线条的线型,最好能在“px.line”部分内实现。
1个回答

9

您可以通过数据框中的变量设置不同的样式,方式如下:

line_dash='Level'

情节

enter image description here

完整代码

import plotly.graph_objects as go
import pandas as pd
import numpy as np
import plotly.io as pio
import plotly.express as px


group = pd.DataFrame({'Hour': {0: 7, 1: 7, 2: 7, 3: 8, 4: 8, 5: 8},
 'Level': {0: 'H', 1: 'M', 2: 'L', 3: 'H', 4: 'M', 5: 'L'},
 'value': {0: 1.435,
  1: 3.1239999999999997,
  2: 5.577999999999999,
  3: 0.435,
  4: 2.124,
  5: 4.578}})

import plotly.graph_objects as go
fig = px.line(group, x="Hour", y="value",color='Level', title='Graph',category_orders={'Level':['H','M','L']}
             ,color_discrete_map={'H':'royalblue','M':'orange','L':'firebrick'}, line_dash='Level')

fig.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接