散点图中点的垂直线

2024-05-16 03:07:03 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一组点x和一组对应的数据y。我现在用散点图plt.scatter(x,y)来绘制。我得到的图形包含一些由matplotlib生成的x轴刻度。有没有一种方法可以实现自动勾选,但添加垂直线从x轴到分散点和标签他们?


Tags: 数据方法图形matplotlib绘制plt标签刻度
2条回答

好吧,有一个^{}方法,使用起来容易得多:

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

像这样?

altered scattergram

如果是这样的话,这里是要点。

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)
  • 有关指定颜色的可选方法,请参见specifying colours
  • 有关X11颜色名称及其相应十六进制代码的列表,请参见X11 colours
  • 注意,matplotlib似乎不喜欢两个单词的颜色名称,比如“Hot Pink”。

附录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()

相关问题 更多 >