python - 如何使用数据框中的 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 中有多少值正在下雨,有多少没有?
这些是小时,垃圾箱大小应该是小时吧?
解决方案
我相信您正在寻找的是堆积柱形图。
下面的代码将为您生成这个。
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()
推荐阅读
- python - Pandas:是否可以在 Jupyter Notebook 中创建类似 Excel Slicer 的(交互式过滤器)?
- java - JavaFX 添加线程
- python - Python使用def函数创建不同的变量
- apache-spark - 时间列应该使用什么数据类型
- c++ - 如何使用 gdb 查看 boost::multi_index 散列索引的数据
- python - 如何在 pytorch 中逐步增长神经网络?
- node.js - 如何在我的共享托管服务器上设置我的 react/redux/express 应用程序?
- tensorflow - LSTM 批量大小和序列长度如何影响内存
- angular - 当我编辑另一个属性时,mat-option 的值消失了
- unity3d - 大量 3D 模型文件可以冻结 Unity 编辑器和 Jetbrains Rider