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_objectexpress 等便捷包装器。原因是我(个人)觉得向用户展示正在发生的事情是有帮助的'under the hood',而不是用一个方便的包装器来掩盖底层代码逻辑。

这样,当用户需要修改图形的更精细细节时,他们将更好地理解 Plotly 为底层图形构建的 lists 和 dicts引擎(逆戟鲸)。

文档:
这是引用 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})

图表: