Plotly python如何绘制无界线和跨度?

时间:2016-07-01 16:45:08

标签: python plotly

我在IPython笔记本中使用plotly(离线版),我非常喜欢它。但是我找不到绘制垂直线或垂直带的方法。

matplotlib中的等价物是:

import matplotlib.plyplot as plt
plt.axvline(x=0)
plt.axvspan(xmin=0, xmax=1)

提前致谢

3 个答案:

答案 0 :(得分:4)

您可以为图形布局添加形状。形状可以包括线条或矩形。也可以通过相对于绘图区域而不是特定轴绘制它们来使它们无界。请查看plotly shapes docs中的示例。

layout = {
        'title': "My Chart",
        'shapes': [
            {  # Unbounded line at x = 4
                'type': 'line',
                # x-reference is assigned to the x-values
                'xref': 'x',
                # y-reference is assigned to the plot paper [0,1]
                'yref': 'paper',
                'x0': 4,
                'y0': 0,
                'x1': 4,
                'y1': 1,
                'line': {
                    'color': 'rgb(55, 128, 191)',
                    'width': 3,
                }
            },
            {  # Unbounded span at 6 <= x <= 8
                'type': 'rect',
                # x-reference is assigned to the x-values
                'xref': 'x',
                # y-reference is assigned to the plot paper [0,1]
                'yref': 'paper',
                'x0': 6,
                'y0': 0,
                'x1': 8,
                'y1': 1,
                'fillcolor': '#d3d3d3',
                'opacity': 0.2,
                'line': {
                    'width': 0,
                }
            }
        ],
    }

答案 1 :(得分:0)

我自己刚刚开始,我到目前为止还没有找到一个很好的方法来做到这一点。但是如果你只需要一条水平线或垂直线,下面的代码似乎是一个可行的黑客,想法是使用默认网格,但只绘制一个理想高度的网格线。在布局字典中包含以下内容,它将在 yline 处绘制一条水平线。

  yaxis=dict(
         zeroline=False,
         autotick=False,
         showgrid=True,
         tick0=yline,
         dtick=<something very large, so that next lines are out of range>
  )

答案 2 :(得分:0)

我会使用&#39;形状&#39;布局中的选项。例如,要获得x = 6处的垂直线:

layout = {'title' : 'example',
          'shapes' : [{'type' : 'line', 'x0' : 6, 
                      'x1' : 6, 'y0' : 0, 'y1' : 10, 
                       'width' : 1}]}

您可以更改width参数以绘制垂直条带。