17

我想要plot(x, sin(x))但不是一条从(xi,yi)到的线(x_i+1,y_i+1)我想要一条垂直线到每个点(xi,0)(xi,yi)因为有时点之间的插值没有意义(例如量化数据)(并且它看起来比没有垂直线好得多)。

很像下面的茎图(来自 matlab 文档),但可以选择关闭圆圈和点之间的“-”。不幸的是,我自己在 matplotlib 文档中找不到合适的绘图功能。

茎图

4

2 回答 2

19

matplotlib 中也有一个茎图(又名棒棒糖图)。


您可以在下面找到文档中的示例。

import matplotlib.pyplot as plt
import numpy as np

# returns 10 evenly spaced samples from 0.1 to 2*PI
x = np.linspace(0.1, 2 * np.pi, 10)

markerline, stemlines, baseline = plt.stem(x, np.cos(x), '-.')

# setting property of baseline with color red and linewidth 2
plt.setp(baseline, color='r', linewidth=2)

plt.show()

茎图


如果要调整基线的y位置,可以使用bottom参数。

(改编)示例:

import matplotlib.pyplot as plt
import numpy as np

# returns 10 evenly spaced samples from 0.1 to 2*PI
x = np.linspace(0.1, 2 * np.pi, 10)

plt.stem(x, np.cos(x), '-.', bottom=-2)

plt.show()

茎图 2

于 2012-10-30T18:26:17.557 回答
0

我想你想使用 linestyle='steps--'

plot(x, sin(x), linestyle='steps--')
于 2012-10-30T18:21:16.197 回答