我正在使用以下代码绘制散点图
fig, ax = plt.subplots(figsize=(20, 15))
ax.scatter(found_devices_df['time'], found_devices_df['label'], c=found_devices_df['label'],
marker='.', s=found_devices_df['count']*100, alpha=.6)
fig.autofmt_xdate()
我想分别在每个水平的x和y轴上绘制水平线和垂直线(不等距网格)。我在X轴上有timestamps
,在Y轴上有设备类型。
如何为此使用ax.hline
和ax.vline
?
我尝试ax.axvline(found_devices_df['time'], color="red", linestyle="--")
为每个x数据时间戳绘制垂直线,但出现了错误
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
答案 0 :(得分:1)
如果要绘制多条垂直线,请尝试以下代码。
ax.vlines(x, ymin=0.0, ymax=1.0, color=color, linestyle="--")
要绘制多条水平线,请尝试以下代码
ax.hlines(y, xmin=0.0, xmax=1.0, ...)
完整代码:(我们在官方参考中自定义了散点图。)
import numpy as np
np.random.seed(19680801)
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
for color in ['tab:blue', 'tab:orange', 'tab:green']:
n = 25
x, y = np.random.rand(2, n)
scale = 200.0 * np.random.rand(n)
ax.scatter(x, y, c=color, s=scale, label=color, alpha=0.8, edgecolors='none')
ax.vlines(x, ymin=0.0, ymax=1.0, color=color, linestyle="--")
# ax.legend()
# ax.grid(True)
plt.show()