【问题标题】:Plotly: How to plot Horizontal line Between "2 Points" where points on x axis are MonthsPlotly:如何在 x 轴上的点为月的“2 点”之间绘制水平线
【发布时间】:2022-01-14 17:47:15
【问题描述】:

有没有办法控制plotly中水平线和垂直线的起点和终点?

import plotly.graph_objects as go
        
fig = go.Figure(data=go.Scatter())
fig.add_vline(x=1, line_width=2, line_dash="dash", line_color="green")
fig.add_hline(y=2, line_width=2, line_dash="dash", line_color="red")
fig.show()

上面的代码将在整个屏幕上绘制线条

我想做这样的事情:

import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize = (10,7))

ax.hlines(y=2, xmin='July', xmax='Aug', linewidth=2, color='red', linestyles = 'dotted')
ax.axvline(x = 1,color = 'green', linestyle = 'dotted', linewidth = 2)

【问题讨论】:

    标签: python matplotlib plotly data-visualization plotly-python


    【解决方案1】:

    documentation 开始,add_vline 将跨越绘图的整个 y 轴,add_hline 将跨越绘图的整个 x 轴。

    您可以改为对 Plotly Shapes 中的图形使用 add_shape 方法,并通过使用参数 x0,x1,y0,y1 指定开始和结束坐标来添加线段。

    编辑:如果您的 x 轴上有日期时间,您可以将日期时间传递给 x 坐标参数

    import plotly.express as px
    import pandas as pd
    
    df = px.data.stocks()
    fig = px.line(df, x='date', y="GOOG")
    
    vertical_date_time = pd.to_datetime("2018-07-01")
    horizontal_date_time_start = pd.to_datetime("2018-04-01")
    horizontal_date_time_end = pd.to_datetime("2018-10-01")
    fig.add_shape(type="line", x0=vertical_date_time, y0=0.9, x1=vertical_date_time, y1=1.2, line_width=2, line_dash="dash", line_color="green")
    fig.add_shape(type="line", x0=horizontal_date_time_start, y0=1.05, x1=horizontal_date_time_end, y1=1.05, line_width=2, line_dash="dash", line_color="red")
    
    fig.show()
    

    【讨论】:

    • 但我将 x 轴作为月份、年份、秒等的名称,这就是问题所在
    • @Deshwal 我使用一些带有日期时间 xaxis 的示例数据更新了我的答案
    • 如果可以的话,再提供一项帮助,默认情况下,它会在非交易日显示缺口。对于Day,我做了一些调整,但对于分钟数据,它仍然显示出一些差距。有什么想法吗?
    • @Deshwal 我很乐意提供帮助,但我认为您所问的问题超出了这里的原始问题。你能提出一个关于数据缺口的新问题吗?
    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2011-05-08
    • 2020-12-02
    相关资源
    最近更新 更多