为数据框中的每个非零值绘制一条垂直线

时间:2019-07-24 12:16:24

标签: python pandas matplotlib

我需要为数据帧中的每个非零值制作垂直线。我使用以下方法创建了一个小型数据框:

df = pd.DataFrame(np.random.randint(0,2,size=(100,1)))

我尝试创建一个在每个位置都有一条垂直线的图,该图的垂直线为1,而不是零,方法是:

graph = plt.figure(1)
plt.axvline(x = df)
graph.show()

但是,我得到了这个错误: “ ValueError:DataFrame的真值不明确。请使用a.empty,a.bool(),a.item(),a.any()或a.all()。”

有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:2)

使用axvline

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


df = pd.DataFrame(np.random.randint(0,2,size=(100,1)))

fig, ax = plt.subplots()

for i, row in df.iterrows():
    if row.values != 0:
        ax.axvline(x = i)

plt.show()

使用vlines

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


df = pd.DataFrame(np.random.randint(0,2,size=(100,1)))

fig, ax = plt.subplots()

x = df.index.values[(df.values[:,0] > 0)]
ax.vlines(x, 0,1, transform=ax.get_xaxis_transform() )

plt.show()