在数据中每个x,y值绘制一条水平线和一条垂直线

时间:2020-07-26 23:19:15

标签: python matplotlib

我正在使用以下代码绘制散点图

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.hlineax.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()

1 个答案:

答案 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()

enter image description here