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

标签 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()。”

有人知道怎么做吗?

最佳答案

使用 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/

相关文章:

python - 有没有办法根据子数组对张量进行排序?

python - astropy.io.fits 从具有多个 HDU 的大型拟合文件中读取行

python - Matplotlib:在另一个轴面板上方绘制一条线

python - 打印出一个 numpy 数组,其中包含 BMI 低于 21 的所有玩家的 BMI

python - 如何使用用户条目更改文件名?

pandas - 如何修复 python 中的 "Data must be 1-dimensional"异常

python - 使用距离矩阵计算 Pandas Dataframe 中行之间的距离

mysql - 如何在 SQLAlchemy 的 `charset` 中使用 `encoding` 和 `create_engine`(创建 Pandas 数据框)?

python - 如何从 matplotlib 中的轴删除 xtics?

python - genfromtxt 加载按行排列的数据