假设我有一组点
x
和相应的数据 y
。我现在用散点图绘制它们,plt.scatter(x,y)
。得到的图中包含一些由 matplotlib 生成的 x 轴刻度。是否有办法保持自动刻度的情况下,从 x 轴向散点中的点添加垂直线并对其进行标记?x
和相应的数据 y
。我现在用散点图绘制它们,plt.scatter(x,y)
。得到的图中包含一些由 matplotlib 生成的 x 轴刻度。是否有办法保持自动刻度的情况下,从 x 轴向散点中的点添加垂直线并对其进行标记?嗯,有一个stem
方法,使用起来更加简单:
import matplotlib.pyplot as plt
import numpy as np
x, y = np.random.random((2, 20))
fig, ax = plt.subplots()
ax.stem(x, y, markerfmt=' ')
plt.show()
如果您想要在行的顶部添加项目符号,请删除markerfmt
。
basefmt
来防止水平轴变成红色。ax.stem(fs, amps, basefmt= 'C0', markerfmt=' ')
- mins这样做对吗?
如果是的话,以下是必要的要点。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import collections as matcoll
x = np.arange(1,13)
y = [15,14,15,18,21,25,27,26,24,20,18,16]
lines = []
for i in range(len(x)):
pair=[(x[i],0), (x[i], y[i])]
lines.append(pair)
linecoll = matcoll.LineCollection(lines)
fig, ax = plt.subplots()
ax.add_collection(linecoll)
plt.scatter(x,y)
plt.xticks(x)
plt.ylim(0,30)
plt.show()
补充:
对于彩色圆点,请将plt.scatter(x,y)
替换为:
colours = ['Crimson', 'Blue', 'Fuchsia', 'Gold', 'Green', 'Tomato', 'Indigo', 'Turquoise', 'Brown', 'Wheat', 'Yellow',]
plt.scatter(x,y,c=colours)
补充 2:
根据要求,最简单的方法可能是使用第二个答案提供的建议,并进行适当的调整。
import matplotlib.pyplot as plt
from datetime import datetime
from random import randint
x = [datetime(2019, 6, i) for i in range(1,21)]
y = [randint(10,20) for i in range(1,21)]
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
plt.xticks(rotation=90)
ax.stem(x, y, markerfmt=' ')
plt.show()