Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为数据帧中的每个非零值绘制垂直线_Python_Pandas_Matplotlib - Fatal编程技术网

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