【问题标题】:How to efficiently create a line plot with connected horizontal lines per data point?如何有效地创建每个数据点连接水平线的线图?
【发布时间】:2022-01-13 09:25:29
【问题描述】:

我想创建一个这样的情节: Connected horizontal line plot

我知道如何在 Matplotlib 中创建水平线,并且我看到了一种创建许多短水平线并将它们与短垂直线连接起来的方法,但我有一种直觉认为可能有更好的方法。

我自己试过这段代码:

import matplotlib.pyplot as plt
y = [1, 1, 3, 3, 6, 6]
x = [1, 2, 2, 3, 3, 4]

plt.plot(x, y)
plt.show()

它产生this plot

它具有我想要的基本功能,但由于我每个月都有数据,因此创建这样的图需要一些笨拙的数据操作。

最后,我还想创建一个条形图,它只显示条形的顶线,这样可以很好地创建水平线,但它们不会连接。

提前感谢您的帮助!

【问题讨论】:

  • 你试过plt.step(...)吗?

标签: python matplotlib


【解决方案1】:

您最初的直觉是正确的,您可以通过简单的 numpy 数组整形来生成连续点的列表:

import numpy as np

x = np.array([0,1,2,3,4,5,6,7,8])
y = np.array([1,2,3,2,5,4,2,0,2])

x2 = np.c_[x-0.5,x+0.5].ravel()
y2 = np.c_[y,y].ravel()

plt.plot(x2, y2)

也就是说,这一切都是由matplotlib.pyplot.step 自动完成的,它有一个where 参数来定义对齐方式(例如在中点上):

plt.step(x, y, where='mid')

输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多