如何在 Plotly-Python 中将图例放置在绘图内?

pythonserver side programmingprogramming

数据可视化是一种强大的工具,它使我们能够更真实地理解数据示例、趋势和知识。Plotly-Python 是一个灵活且直观的绘图库,它为数据科学家、分析师和专家提供了创建外观引人入胜且富有创意的绘图的能力。

图例是任何绘图的重要组成部分之一,它在帮助观察者理解信息和识别图形中存在的不同元素方面发挥着重要作用。当然,Plotly 将图例放置在绘图区域之外,通常位于右侧。

虽然这种安排在某些情况下是合理的,但在某些情况下,将图例放置在绘图内可以显著改善视觉风格,节省宝贵的空间,并改善整体用户体验。在本完整指南中,我们将深入研究使用 Plotly-Python 在情节中放置图例的各种方法。

了解 Plotly-Python 中的图例

在深入研究在情节中移动图例之前,我们应该研究一下图例在 Plotly-Python 中的作用。图例类似于帮助我们翻译情节的小地图。当我们向情节添加多条线(数据系列)时,它们会自然出现。每条线都有一个标签,这些标记显示在图例中,让我们知道每条线代表什么。

当然,Plotly 将图例放在情节之外,通常放在右侧。这通常效果很好,但有时它会使情节看起来很拥挤,尤其是当我们有很多线或情节很小的时候。在图中放置图例可以使其看起来更整洁,更专业。

在图中放置图例

现在,我们应该学习如何使用 Plotly-Python 在图中放置图例。有两种基本方法可以做到这一点:

使用 layout.legend 属性

要将图例放置在图中,我们可以使用 layout.legend 属性并设置 x 和 y 方向。x 方向控制平面位置,y 方向控制向上位置。 x 和 y 的数值范围从 0 到 1。例如,(0, 0) 是图的左下角,(1, 1) 是右上角。

示例

这里有一个代码可以帮助我们在图中设置图例:

在这个例子中,我们设置 x=0.5 和 y=0.9,这意味着图例将位于图中心点的下方。您可以根据具体情况更改方向,以找到最适合您绘图的情况。

import plotly.graph_objects as go
# 测试信息
x_values = [1, 2, 3, 4, 5]
y_values1 = [2, 4, 1, 5, 3]
y_values2 = [1, 3, 2, 4, 5]
# 创建轨迹
trace1 = go.Scatter(x=x_values, y=y_values1, name='Trace 1', mode='markers')
trace2 = go.Scatter(x=x_values, y=y_values2, name='Trace 2', mode='lines')
# 创建图形
fig = go.Figure([trace1, trace2])
# 将设计更新为将图例放入绘图中
fig.update_layout(legend=dict(x=0.5, y=0.9)) # 逐个更改 x 和 y 轴
# 显示绘图
fig.show()

输出

使用自动调整大小的图例定位

有时,手动设置 x 和 y 轴可能不太好,尤其是在处理不同的绘图大小或数据时。Plotly 为我们提供了另一种选择 - 使用自动调整图例位置。我们可以通过将 xanchor 和 yanchor 属性与 x 和 y 合并来实现这一点。

示例

在此示例中,我们设置 x=0 和 y=1,将图例置于图的左上角。通过使用 xanchor='left' 和 yanchor='top',图例会根据图的大小自动更改。

import plotly.graph_objects as go

# 测试信息
x_values = [1, 2, 3, 4, 5]
y_values1 = [2, 4, 1, 5, 3]
y_values2 = [1, 3, 2, 4, 5]

# 创建轨迹
trace1 = go.Scatter(x=x_values, y=y_values1, name='Trace 1', mode='markers')
trace2 = go.Scatter(x=x_values, y=y_values2, name='Trace 2', mode='lines')

# 创建图形
fig = go.Figure([trace1, trace2])

# 更新设计以自动测量图例位置和左上角锚点
fig.update_layout(legend=dict(x=0, y=1, xanchor='left', yanchor='top'))

#显示图
fig.show()

输出

子图中的图例

假设您正在使用子图(单个图中的不同图),您可能需要将图例专门放在每个子图中。 Plotly 使这变得非常简单!

这是将图例放在子图中的示例:

示例

在此示例中,我们使用 make_subplots() 来创建 2x1 子图网格。我们使用 add_trace() 为每个子图添加了轨迹。为了将图例放入每个子图内,我们使用了 legend=dict(x=0.5, y=-0.2, xanchor='center', yanchor='top')。此外,使用 legend_orientation='h' 在子图内以关卡设计显示图例。

import plotly.graph_objects as go
from plotly.subplots import make_subplots

# 测试信息
x_values = [1, 2, 3, 4, 5]
y_values1 = [2, 4, 1, 5, 3]
y_values2 = [1, 3, 2, 4, 5]

# 制作两行一列的子图
fig = make_subplots(rows=2, cols=1, shared_xaxes=True, vertical_spacing=0.1)

# 向子图添加轨迹
fig.add_trace(go.Scatter(x=x_values, y=y_values1, name='Trace 1', mode='markers'), row=1, col=1)
fig.add_trace(go.Scatter(x=x_values, y=y_values2, name='Trace 2', mode='lines'), row=2, col=1)

# 更新设计以将图例放在子图中并水平对齐
fig.update_layout(
    legend=dict(x=0.5, y=-0.2, xanchor='center', yanchor='top'), # Adjust y to move legend inside subplot
    legend_orientation='h'
)

# 更新轴标题
fig.update_xaxes(title_text='X Values', row=2, col=1)
fig.update_yaxes(title_text='Y Values', row=1, col=1)
fig.update_yaxes(title_text='Y Values', row=2, col=1)

# 显示图
fig.show()

输出

结论

读者将全面了解如何使用 Plotly-Python 在图中定位图例,从而使他们能够创建具有视觉吸引力和实用性的信息表示。

总而言之,这张关于如何在图中定位图例的深远地图Plotly-Python 中的 plot 将为数据爱好者提供创造令人惊叹和富有创意的见解所需的知识和技能。通过擅长自定义图例位置和使用高级自定义功能,读者可以提高他们的数据理解能力,并通过视觉叙述真正传达知识。

请记住,您可以使用 layout.legend 属性或 xanchor 和 yanchor 的自动调整大小方法将图例放置在图内。如果您正在使用子图,则可以将图例单独放在每个子图内。


相关文章