Python 为数据帧中的每个非零值绘制垂直线
我需要为数据帧中的每个非零值创建垂直线。我使用以下方法创建了一个小数据帧:Python 为数据帧中的每个非零值绘制垂直线,python,pandas,matplotlib,Python,Pandas,Matplotlib,我需要为数据帧中的每个非零值创建垂直线。我使用以下方法创建了一个小数据帧: df = pd.DataFrame(np.random.randint(0,2,size=(100,1))) 我试着创建一个在每个地方都有一条垂直线的图,每个地方都有一个1,而不是一个0: graph = plt.figure(1) plt.axvline(x = df) graph.show() 但是,我得到了这个错误: ValueError:数据帧的真值不明确。请使用a.empty、a.bool()、a.item
df = pd.DataFrame(np.random.randint(0,2,size=(100,1)))
我试着创建一个在每个地方都有一条垂直线的图,每个地方都有一个1,而不是一个0:
graph = plt.figure(1)
plt.axvline(x = df)
graph.show()
但是,我得到了这个错误:
ValueError:数据帧的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()
有人知道怎么做吗?使用:
使用:
令人惊叹的!我尝试为这个添加一个图例,但它为每个单独的行创建了一个图例项。您知道如何仅创建一个图例项来表示整个线条吗?在第一种情况下,您需要手动创建图例。在第二种情况下,它使用
label
开箱即用。
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()
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()