Plotly:如何处理彼此重叠的色条和图例?

10
我有一个简单的图表,并使用Plotly Express库进行绘制。以下是图像,其中有两个重叠的图例:“排名”和“类型”。

px.scatter_ternary(data_frame = data, a='Length.', b='Beats.Per.Minute', c='Popularity',
               color = 'Rank',
               symbol = 'Genre',
               labels = {'Length.': 'Len', 'Beats.Per.Minute':'Beats'},
               color_continuous_midpoint = 15,
               symbol_sequence = ['circle-open-dot', 'cross-open','triangle-ne'])

如何避免重叠?


1
这不是关于为图例腾出空间的问题,而是如何处理三元图所生成的基于一个变量的图例以及基于另一个变量的色条,并将它们放置在相同的x,y坐标轴上。我改变了标题来反映这一点。如果您不同意,请随时再次更改。 - vestland
1
谢谢,@vestland。这是一个有效的改进。 - Shah Rukh K
3个回答

13

简短回答:

您可以使用以下方法移动色条:

fig.update_layout(coloraxis_colorbar=dict(yanchor="top", y=1, x=0,
                                          ticks="outside"))

详细内容:

由于您没有提供一个完全可执行的代码片段和数据样本,因此我将不得不基于一个数据集和一个示例来提出建议,至少能够重现类似的问题。看一下:

enter image description here

这似乎是您正在面临的确切问题。要使图表易读,我会使用fig.update_layout(coloraxis_colorbar()移动颜色条,就像这样:

enter image description here

完整代码:

# imports
import plotly.express as px

# data
df = px.data.election()

# figure setup
fig = px.scatter_ternary(df, a="Joly", b="Coderre", c="Bergeron", hover_name="district", 
    color="total", size="total", size_max=15, symbol ='Coderre',
    color_discrete_map = {"Joly": "blue", "Bergeron": "green", "Coderre":"red"},
    )

# move colorbar
fig.update_layout(coloraxis_colorbar=dict(yanchor="top", y=1, x=0,
                                          ticks="outside",
                                          ticksuffix=" bills"))
fig.show()

我希望这能解决你的实际问题。如果不能,请不要犹豫,让我知道!


5
在我的情况下;
fig = ...
fig.update_layout(legend_orientation="h")

问题已解决。


这对我起了作用 - undefined

2
在某些情况下,将颜色条的方向更改为水平方向是有意义的,也是一个快速解决方法。
fig.update_layout(coloraxis_colorbar=dict(orientation="h"))

这给了我一个错误:```你是不是想说"bordercolor"?无效的属性路径: orientation``` - Veritas_in_Numeris
不确定为什么您会看到那个错误。在我使用的版本中,“orientation”是一个有效的属性。文档在这里:https://plotly.com/python/reference/layout/coloraxis/#layout-coloraxis-colorbar-orientation - iKenSpatial

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