【问题标题】:Matplotlib fill between plot and horizontal lineMatplotlib 在绘图和水平线之间填充
【发布时间】:2021-06-24 15:24:27
【问题描述】:

抱歉,我无法发布我的真实数据或绘图。所以我在 MS Paint 中制作了图形绘图。

所以我有我的情节 - 橙色线,作为一组 X 和 Y 值 plt.plot(data_x, data_y)。 然后我添加了水平线 - 蓝线:plt.axvline(x=10)。 现在我想在这条线和我的绘图之间填充颜色空间(最终,当值低于水平线时使用一种颜色,当它们高于水平线时使用第二种颜色)。

我尝试使用 plt.fillplt.fill_betweenplt.axhspan,但我收到了维度问题或元素与序列的错误。

有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:

    是的,有一个ax.fill_betweenwhere 参数用于执行此操作:

    import matplotlib.pyplot as plt
    import numpy as np
    
    # make data
    x = np.linspace(0, np.pi * 2, 300)
    y = np.sin(x)
    
    # init figure
    fig, ax = plt.subplots()
    
    # plot sin and line
    ax.plot(x, y, color='orange')
    ax.axhline(0)
    
    # fill between hline and y, but use (y > 0) and (y < 0)
    # to create boolean masks determining where to fill
    ax.fill_between(x, y, where=(y > 0), color='orange', alpha=.3)
    ax.fill_between(x, y, where=(y < 0), color='blue', alpha=.3)
    

    【讨论】:

      【解决方案2】:

      你必须使用

      import matplotlib.pyplot as plt
      import numpy as np
      
      data_x = np.arange(0.0, 2, 0.01)
      data_y = np.sin(2 * np.pi * x)
      data_y2 = 0
      
      fig, ax = plt.subplots()
      
      ax.fill_between(data_x, data_y, data_y2,
                      where=data_y2 >= data_y,
                      facecolor='green', interpolate=True)
      ax.fill_between(data_x, data_y, data_y2,
                      where=data_y2 <= data_y,
                      facecolor='red', interpolate=True)
      

      请注意,data_y2 必须是标量(例如 0)或与 data_y 具有相同的形状。

      您可以在这里找到相关文档:

      https://matplotlib.org/3.1.1/gallery/lines_bars_and_markers/fill_between_demo.html

      https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.fill_between.html

      【讨论】:

        猜你喜欢
        • 2015-12-29
        • 2023-03-22
        • 2021-11-19
        • 1970-01-01
        • 1970-01-01
        • 2017-11-09
        • 2018-10-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多