我想绘制数据,其中连续的点由矩形的一部分相连,这些部分可以是平面,然后是垂直,或者是垂直,然后是平面。这是一种幼稚的方法:
import matplotlib.pyplot as plt
x_data = [0.0, 1.0, 3.0, 4.5, 7.0]
y_data = [1.5, 3.5, 6.0, 2.0, 9.0]
# Linear interpolation
plt.plot(x_data, y_data, label='linear_interp')
# Vertical first interpolation
x_data_vert_first = [0.0, 0.0, 1.0, 1.0, 3.0, 3.0, 4.5, 4.5, 7.0]
y_data_vert_first = [1.5, 3.5, 3.5, 6.0, 6.0, 2.0, 2.0, 9.0, 9.0]
plt.plot(x_data_vert_first, y_data_vert_first, label="vert_first")
# Horizontal first interpolation
x_data_flat_first = [0.0, 1.0, 1.0, 3.0, 3.0, 4.5, 4.5, 7.0, 7.0]
y_data_flat_first = [1.5, 1.5, 3.5, 3.5, 6.0, 6.0, 2.0, 2.0, 9.0]
plt.plot(x_data_flat_first, y_data_flat_first, label="flat_first")
plt.legend(loc='upper left')
plt.show()
有没有实现这一目标的pyplot选项?在numpy或scipy中内置插值功能?我没有在文档中看到任何内容(例如,这不是箱形图或条形图,而是不同的东西)
我可以编写一个朴素的函数来为我执行这种类型的插值,但是如果可能的话,我宁愿坚持使用库函数。
答案 0 :(得分:2)
您可以使用plt.step
获得相同的结果:
plt.plot(x_data, y_data, label='linear_interp')
plt.step(x_data, y_data, where = 'pre', label = 'vert_first')
plt.step(x_data, y_data, where = 'post', label = 'flat_first')
plt.legend(loc='upper left')
plt.show()