Plotly:更改 y 轴刻度
Plotly: Change y-axis scale
我有一个如下所示的数据集:
x y z
0 Jan 28446000 110489.0
1 Feb 43267700 227900.0
当我绘制这样的折线图时:
px.line(data,x = 'x', y = ['y','z'], line_shape = 'spline', title="My Chart")
y 轴刻度从 0 到 90 M。图表上第一条 y 线就足够了。但是,第二行似乎总是在 0M。我可以做些什么来改进我的图表,以便我们可以清楚地看到两列的值如何随 x 值变化?
有什么方法可以规范化数据吗?或者我可以更改图表的缩放比例。
我们经常使用不同比例的数据,缩放数据会掩盖我们希望显示的特征。处理此问题的一种方法是添加 辅助 y 轴 。示例如下所示。
要点:
- 创建一个
layout
字典对象
- 向字典添加一个
yaxis2
键,具有以下内容:'side': 'right', 'overlaying': 'y1'
- 这会告诉 Plotly 在图表的右侧创建次要 y 轴,并覆盖主要 y 轴。
- 将适当的轨迹分配给新创建的辅助 y 轴,如:
'yaxis': 'y2'
- 不需要分配其他迹线,因为
'y1'
是默认的 y 轴。
评论(长话短说;博士):
此处显示的示例代码使用较低级别的 Plotly API,而不是 graph_object
到 express
等便捷包装器。原因是我(个人)觉得向用户展示正在发生的事情是有帮助的'under the hood',而不是用一个方便的包装器来掩盖底层代码逻辑。
这样,当用户需要修改图形的更精细细节时,他们将更好地理解 Plotly 为底层图形构建的 list
s 和 dict
s引擎(逆戟鲸)。
文档:
这是引用 multiple axes.
的 Plotly 文档的 link
示例代码:
import pandas as pd
from plotly.offline import iplot
df = pd.DataFrame({'x': ['Jan', 'Feb'],
'y': [28446000, 43267700],
'z': [110489.0, 227900.0]})
layout = {'title': 'Secondary Y-Axis Demonstration',
'legend': {'orientation': 'h'}}
traces = []
traces.append({'x': df['x'], 'y': df['y'], 'name': 'Y Values'})
traces.append({'x': df['x'], 'y': df['z'], 'name': 'Z Values', 'yaxis': 'y2'})
# Add config common to all traces.
for t in traces:
t.update({'line': {'shape': 'spline'}})
layout['yaxis1'] = {'title': 'Y Values', 'range': [0, 50000000]}
layout['yaxis2'] = {'title': 'Z Values', 'side': 'right', 'overlaying': 'y1', 'range': [0, 400000]}
iplot({'data': traces, 'layout': layout})
图表:
我有一个如下所示的数据集:
x y z
0 Jan 28446000 110489.0
1 Feb 43267700 227900.0
当我绘制这样的折线图时:
px.line(data,x = 'x', y = ['y','z'], line_shape = 'spline', title="My Chart")
y 轴刻度从 0 到 90 M。图表上第一条 y 线就足够了。但是,第二行似乎总是在 0M。我可以做些什么来改进我的图表,以便我们可以清楚地看到两列的值如何随 x 值变化?
有什么方法可以规范化数据吗?或者我可以更改图表的缩放比例。
我们经常使用不同比例的数据,缩放数据会掩盖我们希望显示的特征。处理此问题的一种方法是添加 辅助 y 轴 。示例如下所示。
要点:
- 创建一个
layout
字典对象 - 向字典添加一个
yaxis2
键,具有以下内容:'side': 'right', 'overlaying': 'y1'
- 这会告诉 Plotly 在图表的右侧创建次要 y 轴,并覆盖主要 y 轴。
- 将适当的轨迹分配给新创建的辅助 y 轴,如:
'yaxis': 'y2'
- 不需要分配其他迹线,因为
'y1'
是默认的 y 轴。
- 不需要分配其他迹线,因为
评论(长话短说;博士):
此处显示的示例代码使用较低级别的 Plotly API,而不是 graph_object
到 express
等便捷包装器。原因是我(个人)觉得向用户展示正在发生的事情是有帮助的'under the hood',而不是用一个方便的包装器来掩盖底层代码逻辑。
这样,当用户需要修改图形的更精细细节时,他们将更好地理解 Plotly 为底层图形构建的 list
s 和 dict
s引擎(逆戟鲸)。
文档:
这是引用 multiple axes.
示例代码:
import pandas as pd
from plotly.offline import iplot
df = pd.DataFrame({'x': ['Jan', 'Feb'],
'y': [28446000, 43267700],
'z': [110489.0, 227900.0]})
layout = {'title': 'Secondary Y-Axis Demonstration',
'legend': {'orientation': 'h'}}
traces = []
traces.append({'x': df['x'], 'y': df['y'], 'name': 'Y Values'})
traces.append({'x': df['x'], 'y': df['z'], 'name': 'Z Values', 'yaxis': 'y2'})
# Add config common to all traces.
for t in traces:
t.update({'line': {'shape': 'spline'}})
layout['yaxis1'] = {'title': 'Y Values', 'range': [0, 50000000]}
layout['yaxis2'] = {'title': 'Z Values', 'side': 'right', 'overlaying': 'y1', 'range': [0, 400000]}
iplot({'data': traces, 'layout': layout})