我需要为数据框中的每个非零值制作垂直线。我使用以下方法创建了一个小数据框:
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()。”
有人知道怎么做吗?
最佳答案
使用 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()
关于python - 为数据框中的每个非零值绘制一条垂直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57182741/