Plotly:如何在折线图中将图例项形状从线更改为框或圆?
Plotly: How to change legend item shape from line to box or circle in a line chart?
我想将图例的项目形状从直线更改为任何其他吸引人的形状,例如方框或圆形。
下面是我的图表。您可以看到图例项显示一条彩色线条。不是很吸引人。
如何在不更改图表类型的情况下更改图例项的形状?
下面是我的图例所需项目形状的示例。
希望 使您的图例符号更具视觉吸引力而又不会弄乱图形痕迹的最佳选择似乎是:
fig.layout.legend.itemsizing = 'constant'
这将为您提供以下图例,其中的项目至少看起来更像一个盒子或矩形而不是一条线:
而不是这个:
一些细节:
默认情况下,图例的形状反映了迹线的形状。这也适用于标记符号的大小和形状。因此,如果您构建这样的图:
那么您可以随时更改图例的透视方式:
fig.data[0].mode = 'markers+lines'
fig.data[0].marker.symbol = 'diamond'
fig.data[0].marker.size = 12
但问题是,这也适用于图形痕迹,正如您在此处看到的那样:
并且我尝试了一些设置标记符号然后删除标记的痕迹,希望在图例中保留标记。但这是行不通的。而且我认为我们都因此而变得更好。这样就剩下我最初的建议了。
完整代码:
# imports
import pandas as pd
import plotly.express as px
# data
df = px.data.stocks()
df = df.drop(['AMZN', 'AAPL', 'MSFT', 'FB'], axis = 1)
colors = px.colors.qualitative.T10
# plotly
fig = px.line(df,
x = 'date',
y = [c for c in df.columns if c != 'date'],
template = 'plotly_dark',
color_discrete_sequence = colors,
title = 'Stocks',
)
fig.data[0].mode = 'markers+lines'
fig.data[0].marker.symbol = 'diamond'
fig.data[0].marker.size = 12
fig.layout.legend.itemsizing = 'constant'
fig.show()
我想将图例的项目形状从直线更改为任何其他吸引人的形状,例如方框或圆形。 下面是我的图表。您可以看到图例项显示一条彩色线条。不是很吸引人。
如何在不更改图表类型的情况下更改图例项的形状?
下面是我的图例所需项目形状的示例。
希望 使您的图例符号更具视觉吸引力而又不会弄乱图形痕迹的最佳选择似乎是:
fig.layout.legend.itemsizing = 'constant'
这将为您提供以下图例,其中的项目至少看起来更像一个盒子或矩形而不是一条线:
而不是这个:
一些细节:
默认情况下,图例的形状反映了迹线的形状。这也适用于标记符号的大小和形状。因此,如果您构建这样的图:
那么您可以随时更改图例的透视方式:
fig.data[0].mode = 'markers+lines'
fig.data[0].marker.symbol = 'diamond'
fig.data[0].marker.size = 12
但问题是,这也适用于图形痕迹,正如您在此处看到的那样:
并且我尝试了一些设置标记符号然后删除标记的痕迹,希望在图例中保留标记。但这是行不通的。而且我认为我们都因此而变得更好。这样就剩下我最初的建议了。
完整代码:
# imports
import pandas as pd
import plotly.express as px
# data
df = px.data.stocks()
df = df.drop(['AMZN', 'AAPL', 'MSFT', 'FB'], axis = 1)
colors = px.colors.qualitative.T10
# plotly
fig = px.line(df,
x = 'date',
y = [c for c in df.columns if c != 'date'],
template = 'plotly_dark',
color_discrete_sequence = colors,
title = 'Stocks',
)
fig.data[0].mode = 'markers+lines'
fig.data[0].marker.symbol = 'diamond'
fig.data[0].marker.size = 12
fig.layout.legend.itemsizing = 'constant'
fig.show()