我需要为数据帧中的每个非零值制作垂直线。我使用以下方法创建了一个小型数据框:
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()。”
有人知道该怎么做吗?
答案 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()