Python 如何在Plotly中从DataFrame列中添加多个文本标签
Plotly是一个开源绘图库,可以在Python中生成多种不同类型的图表。Python用户可以使用Plotly创建交互式的基于web的可视化图形。
在本教程中,我们将看到如何使用Plotly从DataFrame列中添加多个文本标签到图表中。
- 在这里,我们将使用 plotly.graph_objects 模块生成图形。它包含许多方法来自定义图表并将它们渲染为HTML格式。
-
然后,我们将使用该模块的Scatter()方法生成散点图。Scatter()的”line”属性包含一个”color”参数,我们将用它来指定图表所需的颜色。
-
为了生成DataFrame,我们将使用Pandas模块。
按照以下步骤添加来自DataFrame列的多个文本标签。
第1步
导入plotly模块并将其别名为 py 。类似地,导入 pandas 模块并将其别名为 pd。
import plotly as py
import pandas as pd
第2步
导入 plotly.graph_objs 模块,并将其重命名为go。
import plotly.graphs_objs as go
第3步
使用Pandas模块创建一个数据框。
df = pd.DataFrame({
'Age':[20,22,23,24,21],
'Mark':[80,85,90,95,99],
},
第4步
设置索引名称并根据“年龄”列对值进行排序,
# Set index name
df.index.name = 'DataFrame'
# Sort the values
df = df.sort_values('Age')
第5步
创建跟踪以生成散点图,并添加一个文本以显示在列上悬停。
# Create traces to generate scatter plot
# Text to show hover on column
trace = go.Scatter(
x = df.index,
y = df['Mark'],
name = 'Mark',
text = df['Age'],
mode = 'lines+markers',
line = dict(color='green',width = 4)
)
第6步
使用 dict 中的 title 为X轴和Y轴上的多个文本标签创建 layout 。
layout = dict(
title = 'Multiple text labels',
xaxis = dict(title = 'DataFrame'),
yaxis = dict(title = 'Mark'),
)
第7步
使用布局值生成图形并创建离线图。
data = [trace]
fig = dict(data=data, layout=layout)
py.offline.plot(fig, filename = 'df.html')
示例
这是完整的代码,用于从DataFrame列中添加多个文本标签:
import pandas as pd
import plotly as py
import plotly.graph_objs as go
# Crete dataframe
df = pd.DataFrame({
'Age':[20,22,23,24,21],
'Mark':[80,85,90,95,99],
}, index=['one','two','three','four','five'])
# Set index name
df.index.name = 'DataFrame'
# Sort the values
df = df.sort_values('Age')
# Create traces to generate scatter plot
# Text to show hover on column
trace = go.Scatter(
x = df.index,
y = df['Mark'],
name = 'Mark',
text = df['Age'],
mode = 'lines+markers',
line = dict(color='green',width = 4)
)
# Set layout title for X and Y axis
layout = dict(
title = 'Multiple text labels',
xaxis = dict(title = 'DataFrame'),
yaxis = dict(title = 'Mark'),
)
# Create data
data = [trace]
# Set dict of dataset and layout
fig = dict(data=data, layout=layout)
# Generate html file
py.offline.plot(fig, filename = 'df.html')
输出
它将在浏览器上显示以下输出−