首页 > 解决方案 > 如何使用数据框中的 matplotlib 绘制这种类型的直方图

问题描述

我正在考虑以小时为单位绘制关于下雨与非下雨的直方图。 我有一个从 0 到 23 小时的以下数据框列表

我试着画图,但我无法从中理解那个小时有多少下雨,有多少没有下雨

Hour    Raining     Not Raining

0   0   3559751.0   7248389.0

1   1   1606880.0   3361780.0


2   2   145719.0    282413.0


3   3   26804.0     54543.0


4   4   766333.0    1672134.0


5   5   379272.0    800500.0


6   6   59030.0     123764.0


7   7   140758.0    242930.0

8   8   1950224.0   3544500.0

9   9   3806660.0   7234291.0

10  10  477959.0    837528.0

11  11  235289.0    410994.0

12  12  7787028.0   15026342.0


13  13  3145361.0   6265131.0

14  14  388437.0    776277.0

15  15  149688.0    297624.0

16  16  5735102.0   11601840.0

17  17  4250723.0   8442271.0

18  18  564774.0    1123973.0

19  19  290350.0    544482.0

20  20  8302496.0   16203000.0

21  21  4452747.0   8668253.0

22  22  418217.0    784093.0

23  23  115005.0    230668.0

现在我想绘制一个直方图,以便我应该清楚地了解在这些小时 1 到 2 中有多少值正在下雨,有多少没有?

这些是小时,垃圾箱大小应该是小时吧?

标签: pythonpandasmatplotlib

解决方案


我相信您正在寻找的是堆积柱形图。

下面的代码将为您生成这个。

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame([[0, 3559751.0, 7248389.0],[1, 1606880.0, 3361780.0],[2, 145719.0, 282413.0],[3,26804.0, 54543.0],[4,766333.0 ,1672134.0],[5,379272.0 ,800500.0],[6,59030.0, 123764.0],[7,140758.0, 242930.0],[8,1950224.0, 3544500.0],[9,3806660.0, 7234291.0],[10,477959.0, 837528.0],[11,235289.0 ,410994.0],[12,7787028.0, 15026342.0],[13, 3145361.0, 6265131.0],[14, 388437.0, 776277.0],[15, 149688.0, 297624.0],[16, 5735102.0 ,11601840.0],[17,4250723.0, 8442271.0],[18,564774.0, 1123973.0],[19,290350.0, 544482.0],[20,8302496.0, 16203000.0],[21,4452747.0, 8668253.0],[22,418217.0, 784093.0],[23, 115005.0, 230668.0]], columns=["hour", "T", "F"])

df[['T', 'F']].plot(kind='bar', stacked='True')

我希望这有帮助!


这更像你所追求的吗?

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame([[0, 3559751.0, 7248389.0],[1, 1606880.0, 3361780.0],[2, 145719.0, 282413.0],[3,26804.0, 54543.0],[4,766333.0 ,1672134.0],[5,379272.0 ,800500.0],[6,59030.0, 123764.0],[7,140758.0, 242930.0],[8,1950224.0, 3544500.0],[9,3806660.0, 7234291.0],[10,477959.0, 837528.0],[11,235289.0 ,410994.0],[12,7787028.0, 15026342.0],[13, 3145361.0, 6265131.0],[14, 388437.0, 776277.0],[15, 149688.0, 297624.0],[16, 5735102.0 ,11601840.0],[17,4250723.0, 8442271.0],[18,564774.0, 1123973.0],[19,290350.0, 544482.0],[20,8302496.0, 16203000.0],[21,4452747.0, 8668253.0],[22,418217.0, 784093.0],[23, 115005.0, 230668.0]], columns=["hour", "T", "F"])

ax = df.plot(x="hour", y="T", kind="bar", color="blue", alpha=0.3)
df.plot(x="hour", y="F", kind="bar", ax=ax, color="green", alpha=0.3)
plt.show()

推荐阅读