如何在Plotly-Python中将图例定位在图表内部?




如何在Plotly-Python中将图例定位在图表内部?

数据可视化是一种强大的工具,它使我们能够更加准确地理解信息示例、模式和见解。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
# Test information
x_values = [1, 2, 3, 4, 5]
y_values1 = [2, 4, 1, 5, 3]
y_values2 = [1, 3, 2, 4, 5]
# Create traces
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')
# Create the figure
fig = go.Figure([trace1, trace2])
# Update the design to put the legend inside the plot
fig.update_layout(legend=dict(x=0.5, y=0.9))  # Change x and y facilitates on a case-by-case basis
# Show the plot
fig.show()

输出

如何在Plotly-Python中将图例定位在图表内部?

自动调整大小的图例定位

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

示例

在此示例中,我们将x = 0和y = 1设置为将图例放置在图表的左上角。通过使用xanchor = ‘left’和yanchor = ‘top’,图例会根据图表的大小自动调整。

import plotly.graph_objects as go

# Test information
x_values = [1, 2, 3, 4, 5]
y_values1 = [2, 4, 1, 5, 3]
y_values2 = [1, 3, 2, 4, 5]

# Create traces
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')

# Create the figure
fig = go.Figure([trace1, trace2])

# Update the design for auto-measuring legend position and left-top anchor
fig.update_layout(legend=dict(x=0, y=1, xanchor='left', yanchor='top'))

# Show the plot
fig.show()

输出

如何在Plotly-Python中将图例定位在图表内部?

子图中的图例

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

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



示例

在这个示例中,我们使用了make_subplots()函数创建了一个2×1的子图网格。我们使用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

# Test information
x_values = [1, 2, 3, 4, 5]
y_values1 = [2, 4, 1, 5, 3]
y_values2 = [1, 3, 2, 4, 5]

# Make subplots with two rows and one column
fig = make_subplots(rows=2, cols=1, shared_xaxes=True, vertical_spacing=0.1)

# Add traces to the subplots
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)

# Update the design to put legends inside subplots and align them horizontally
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'
)

# Update axis titles
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)

# Show the plot
fig.show()

输出

如何在Plotly-Python中将图例定位在图表内部?

结论

读者将通过使用Plotly-Python在图表中定位图例而获得深入理解,从而使他们能够创建视觉上吸引人且有用的信息可视化。

总之,这篇关于如何在Plotly-Python中放置图例的全面指南将为数据爱好者提供所需的知识和技能,以创建令人惊叹和交互性的可视化。通过熟练掌握自定义图例位置和使用高级自定义功能,读者可以提升他们的数据可视化能力,并通过视觉叙事来真正传达见解。

记住,您可以使用layout.legend属性或使用xanchor和yanchor的自动调整方法在图表中放置图例。如果您正在使用多个子图,可以分别在每个子图中放置图例。



Python 精选笔记
使用Python和Requests库开发网络爬虫使用Python中的Whoosh库开发文本搜索引擎使用Python和scikit-learn开发机器学习模型使用Python和Plotly Dash创建基于Web的数据可视化仪表板使用Python控制树莓派GPIO引脚使用Python和Pandas库构建股票价格预测模型如何在Python中解析XML并计算特定节点属性的实例?如何在Python中解析本地HTML文件?如何按多列对PySpark DataFrame进行排序?如何在Pygame中移动游戏角色?如何在Python中同时打开两个文件?如何使用Python移动文件夹及其子文件夹的列表?如何使用Python将多个文件夹合并成一个文件夹?如何使用Python将多个Excel文件合并成一个单一文件?如何使用Python Pandas按照共同的键合并多个TSV文件?如何使用PIL将透明的PNG图片与另一张图片合并?Python中嵌套函数是如何工作的?Python中的全局变量和局部变量?在Python函数中如何使用全局变量?如何从Python对象中获取源代码?如何在Python中返回一个函数?如何在Python中安装matplotlib?Python - 分割包含散乱字符的字符串Python - 记录列表XORPython – 向记录的末尾添加数据Python - 键值大于K的记录在Python中垂直打印列表Python - 列表中字符串平均长度Python列表中的交替循环Python程序实现混淆词游戏Python-记录联合Python程序计算列表中元组的重复项Python程序:将字符串的字符转换为相反的大小写Python - 打印给定年份列表中的闰年数量Python - 打印所有子列表中的共同元素Python - 删除嵌套列表中的所有元素如何在Python列表中检查空格?在Python中引发异常到另一个异常Python字符串中的范围复制Python程序计算包含列表的列表中列表的数量修改给定Python列表中的重复值Python - 检查元素是否在指定范围内出现从Python的元组列表中删除所有字符串如何使用Pygame添加颜色呼吸效果?如何在Bokeh中添加颜色条如何在Bokeh中添加颜色选择器?使用Python程序显示带有星边框的数字半菱形图案Python使用ipaddress模块确定给定的IPv4地址是否为保留地址使用ipaddress模块的Python程序来确定给定的IP地址是公网还是私网Python程序通过平方和连接给定数字的奇数位数来创建一个OTPPython程序创建以零为中心的列表Python程序计算字符串中的字符数Python程序将米转换为码,反之亦然Python程序:统计文本文件中的元音、行数和字符数Python程序计算文本文件中的单词数量Python程序,用于计算文本文件中空格的数量将字典的值转换为字符串的Python程序Python程序将浮点数转换为指数Python程序将整数转换为指数Python程序将整数转换为罗马数字将整数列表转换为字符串列表的Python程序Python程序将XML转换为字典Python程序:通过重复键对应的值次数将字典转换为列表将Dict of list转换为CSV的Python程序使用正则表达式统计Python程序中大写字母、小写字母、特殊字符和数字值的个数Python元组的并集Python - 嵌套和混合列表中的类型转换Python - 将列表转换为单值列表的元组如何在Python中打印上标和下标?如何在Python中打印多个参数?如何在Plotly-Python中将图例定位在图表内部?如何使用Pandas绘制时序图表?如何使用SciPy在Python中绘制Ricker曲线?如何在Python列表中删除True值?如何使用Python将字典的值转换为绝对值?如何使用Python将字典转换为K个大小的字典?如何使用Python将浮点数舍入到2位小数?如何在Python中将Excel转换为CSV如何在Python中对元组进行索引和切片?如何在Python中判断一个对象是否有属性?在Python中创建实例对象如何使用Python获取城市的经纬度?如何在Python中获取整数输入?如何交换给定 NumPy 数组的列?如何使用NumPy抑制对小数的科学计数法使用?如何使用Python将XML数据存储到MySQL数据库中?如何在Pandas DataFrame中减去两列?如何在Pandas DataFrame中标准化数据?如何堆叠多个Pandas DataFrames?如何使用scikit-learn的train_test_split()函数拆分数据集如何在Python中分割数据以进行训练和测试,而不使用Sklearn在Python set中找到最大值和最小值Python程序:找到长方体的体积、表面积和空间对角线如何在Python程序中获取字符串的K个可能切片如何使用Altair在Python中制作密度图?生成一次性密码(OTP)的Python程序Python程序:找出数组中可被给定数整除的元素的XOR寻找巨大最大公约数(Jumbo GCD)子数组的Python程序如何在OpenCV Python中查找图像轮廓的边界矩形?如何在Python脚本所在的目录中打开文件?如何在Anaconda中安装Python包?如何在OpenCV Python中旋转图像?如何给定完整路径导入Python模块?如何在Python中从另一个函数调用变量?使用Python的Matplotlib在X轴上绘制日期如何在Python中不使用math模块进行平方根运算?如何在Python Tkinter中给Frame添加边框?如何从Python函数返回一个字典?Python程序获取元组中的第一个和最后一个元素如何求一个Python字典的值的总和?Python Pandas - 查找列的最大值并返回其对应的行值机器人流程自动化 - 简介机器学习中的逻辑回归损失函数如何从Python日期中减去一天?将物联网和机器学习相结合,使我们的未来更智能机器学习中的Boosting | Boosting和AdaBoost如何在Python中将时间戳字符串转换为datetime对象?如何在Python中将变量名转换为字符串?什么是Python中的.pyc文件?Python - 检查列表中的所有元素是否相同如何在Python Plotly中设置Y轴的范围?如何将Python日期转换为Unix时间戳?Python中的Turtle绘图编程如何在Python中的给定位置插入一个对象到列表中?如何在Python中进行日期验证?如何使用Python将两个图并排显示?在Python中的方法和函数之间的区别Python中的PYTHONPATH环境变量是什么?如何对Python日期字符串列表进行排序?在Python的Pandas中向现有的DataFrame中添加新列如何将Python元组转换为字典?Python - 使用Pandas读取没有标题的csv文件?如何使用OpenCV Python在图像中检测矩形和正方形?如何使用OpenCV在Python中改变图像的对比度和亮度?如何在Python中将日期时间转换为UTC时间戳?如何列出Python模块中的所有函数?Python程序查找字符串中的所有重复字符使用Python进行文件搜索如何在Python Tkinter中更改按钮大小?如何在Python shell中了解/更改当前目录?如何在Python中检查一个字符是否为大写字母?