在python中绘制条形图[重复]

Posted

技术标签:

【中文标题】在python中绘制条形图[重复]【英文标题】:plotting bar graph in python [duplicate] 【发布时间】:2018-05-20 15:34:20 【问题描述】:

有人请告诉我如何在 python 中绘制条形图或折线图。 我想绘制一个条形图,x 轴为月份,y 轴为不同列的平均值。

我的数据集示例:

Month   Bedroom Outlets Cellar Outlets  Bedroom Lights  DisposalDishwasher  DuctHeaterHRV   FridgeRange FurnaceHRV  KitchenLights   MasterLights    MasterOutlets   WashingMachine
Jan-16  0.008704    0.074089    0.006081    0.000116    0.000058    0.001162    0.176832    0.000024    0.014887    0.009617    0.000378
Feb-16  0.008187    0.075153    0.005993    0.000102    0.000059    0.001905    0.172289    0.000023    0.01448 0.007724    0.000367
Mar-16  0.007725    0.072855    0.005536    0.000073    0.000048    0.001469    0.1261  0.000015    0.014242    0.005848    0.00024
Apr-16  0.007678    0.074465    0.005729    0.000061    0.000042    0.001129    0.093861    0.000014    0.014267    0.005899    0.000152
May-16  0.007864    0.075408    0.005823    0.000096    0.000102    0.001691    0.116811    0.000029    0.014387    0.007111    0.000406
Jun-16  0.006876    0.07829 0.005587    0.000143    0.000134    0.000937    0.176654    0.000046    0.014229    0.005706    0.000654
Jul-16  0.006032    0.093383    0.006214    0.000193    0.000236    0.000831    0.228637    0.000082    0.014352    0.005174    0.001004

例如,我希望我在 y 轴上的值和 2016 年 1 月在 x 轴上的值,并且上面有一个条形图,显示该特定月份的不同属性的使用情况。

【问题讨论】:

我想要一辆新车。请参阅 How to Ask 和 minimal reproducible example。还有SO checklist. 【参考方案1】:

对于使用数据的最通用方式,请使用 pandas。 导入 matplotlib.pyplot 和 pandas 如下:

import matplotlib.pyplot as plt
import pandas as pd

在 pandas 中格式化您的数据,如下所示: 标题列表和数据列表列表:

data = ['Month', 'Bedroom Outlets', 'Cellar Outlets', 'Bedroom Lights', 'DisposalDishwasher', 'DuctHeaterHRV', 'FridgeRange', 'FurnaceHRV', 'KitchenLights', 'MasterLights', 'MasterOutlets', 'WashingMachine']
list_01 = [['Jan-16', 0.008704, 0.074089, 0.006081, 0.000116, 0.000058, 0.001162, 0.176832, 0.000024, 0.014887, 0.009617, 0.000378], ['Feb-16', 0.008187, 0.075153, 0.005993, 0.000102, 0.000059, 0.001905, 0.172289, 0.000023, 0.01448, 0.007724, 0.000367], ['Mar-16', 0.007725, 0.072855, 0.005536, 0.000073, 0.000048, 0.001469, 0.1261, 0.000015, 0.014242, 0.005848, 0.00024], ['Apr-16', 0.007678, 0.074465, 0.005729, 0.000061, 0.000042, 0.001129, 0.093861, 0.000014, 0.014267, 0.005899, 0.000152], ['May-16', 0.007864, 0.075408, 0.005823, 0.000096, 0.000102, 0.001691, 0.116811, 0.000029, 0.014387, 0.007111, 0.000406], ['Jun-16', 0.006876, 0.07829, 0.005587, 0.000143, 0.000134, 0.000937, 0.176654, 0.000046, 0.014229, 0.005706, 0.000654], ['Jul-16', 0.006032, 0.093383, 0.006214, 0.000193, 0.000236, 0.000831, 0.228637, 0.000082, 0.014352, 0.005174, 0.001004]]
data_frame = pd.DataFrame(list_01, columns=data)
data_frame2 = data_frame.set_index(['Month'])
data_frame2.plot.bar()
plt.show()

这将为您提供作为索引的月份以及由带有图例的每个类别的颜色代码表示的列。

【讨论】:

【参考方案2】:

你可以使用 plotly 来达到你想要的结果。

安装plotly包

sudo pip install plotly

然后根据需要导入使用

import plotly.plotly as py
import plotly.graph_objs as go 

data = [go.Bar( x=['jan', 'feb', 'mar'], y=[20, 14, 23] )] 
py.iplot(data, filename='basic-bar')

在您的情况下,将数据框中的月份列传递给 x 并将值传递给 y 作为输入。

Plotly documentation

Bar charts in plotly

【讨论】:

以上是关于在python中绘制条形图[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图垂直条形图分组条形图堆叠条形图

如何在python中绘制条形图

Pandas 在单个条形图上绘制多列 [重复]

python使用matplotlib绘制水平条形图并在条形图上添加实际数值标签实战

在 Python 中将时间序列事件绘制为条形图

Python中matplotlib默认绘制的条形图比较胖?如何设置成体型匀称的条形图,达到最佳的可视化效果。