Python数据可视化:5种绘制柱状图表的⽅法(附源码)本⽂的⽂字及图⽚来源于⽹络,仅供学习、交流使⽤,不具有任何商业⽤途,版权归原作者所有,如有问题请及时联系我们以作处理
以下⽂章来源于数据Magic,作者我不是⼩样
前⾔
⾥⾯有很多优秀的可视化库,matplotlib,aborn,plotnine,pyecharts,bokeh,plotly,mapbox,geoplotlib,甚⾄专门⽤来数据处理的pandas都可以做⼀些简单的绘图。今天我们就⽤五种⽅法来绘制柱状图,分别是
matplotlib,aborn,plotnine,pyecharts,pandas。
⾸先我们先导⼊数据。
1import pandas as pd ## 导⼊pandas库
2
3list1 = [
4 "名字很长的X轴标签1",
5 "名字很长的X轴标签2",
6 "名字很长的X轴标签3",
7 "名字很长的X轴标签4",
8 "名字很长的X轴标签5"
9 ]
10
11
carbon black12list2 = [12,23,33,3,33]
13
14list3 = [3,21,5,52,43]
15
16
17data = pd.concat(
18 [
高兴的英文19 pd.concat([pd.Series(list1,name='x'),pd.Series(list2,name='value'),pd.Series(['product1']*5,name='product')],axis=1),
20 pd.concat([pd.Series(list1,name='x'),pd.Series(list3,name='value'),pd.Series(['product2']*5,name='product')],axis=1)
21 ]
22)
matplotlib是学习python数据分析必定接触到的⼀个库,是⽤来绘图的基础的库,也是其他各个库的基本库之⼀。
1import matplotlib.pyplot as plt # 导⼊绘图库
2
furl3# 设置绘图直接显⽰wenjie
4%matplotlib inline
5
6# 设置绘图的整体表现
7plt.style.u('ggplot') # 设置绘图主题为 ggplot
10
11# 设置画布⼤⼩
12plt.figure(figsize=(12, 7))
13
14# 绘制柱状图--堆积柱状图
15# 绘制下⾯的图
16plt.bar(
the reader17 left = unique(), ## 设置x轴内容
18 height = data.value[data['product'] == 'product1'], ## 设置y轴内容
19 label = 'product1' ## 设置标签
20)
21
22# 绘制上⾯的图
23plt.bar(
24 left = unique(), ## 设置x轴内容
25 height = data.value[data['product'] == 'product2'], ## 设置y轴内容
26 bottom = data.value[data['product'] == 'product1'], ## 设置上⾯的图以下⾯的图的数据为底
27 label = 'product2' ## 设置标签
28 )
29
30## 设置图例标签,标签位置为上⾯中部,⽂字⼤⼩为15,图例是平铺(图例按两列排,即在⼀⾏)
31plt.legend(loc='upper center', fontsize=15, ncol=2)
我们这样就绘制出了⼀张堆积,其实matplotlib绘制柱状图是⽐较简单的,难点就在于绘制堆积柱状图需要绘制多次,分别以前⼀个图的顶部为下⼀个图的底部,这样就可以得到⼀个堆积柱状图了。
⼆、
aborn是基于matplotlib⽽做出来的⼀个可视化的封装库,相对于matplotlib的优点在于可以⽤⽐matplotlib更短的代码实现⽐较复杂的图像,缺点在于⽆法进⾏更强⼤的定制。
如果⽤matplotlib绘制分组柱状图,就需要与绘制堆积柱状图⼀样的⽅法,绘制多次,以前⼀个图的后部作为后⼀个图的前部,⽽⽤aborn就可以⽤⼀⾏代码就可以实现,也不需要指定颜⾊和宽度,可以以⼀个⽐较合理的宽度进⾏显⽰。
留学中介当然,aborn绘图也有其限制,如上图的堆积柱状图就⽆法绘制出来。
1
from plotnine import * ## 导⼊plotnine 库2
3
## 绘制前加括号4
(5
ggplot(data,aes(x='x',y='value',fill='product')) ## 数据对象6
+ geom_bar(stat='identity',width=0.5) ## 绘制柱状图的API 7
+ theme( ## 对绘图的表现进⾏调整8
text = element_text(family = "SimHei"), ## 设置⿊体,可以显⽰中⽂9
legend_direction ='horizontal', ## 图例⽔平呈现10
legend_title = element_blank(), ## 图例标题不显⽰11
legend_background = element_rect('none'), ## 图例没有背景⾊12
胶水英文legend_position = (0.52,0.83), ## 设置图例位置13
figure_size = (9,5), ## 画布的⼤⼩14洪恩小小幼儿英语
axis_title_x = element_blank(), ## X 轴标题为空15
axis_title_y = element_blank() ## Y 轴标题为空16 )17)
三、plotnine
R语⾔的绘图在数据分析的语⾔⾥⼀直是⽐较强的,⽽plotnine是德国的⼀个⼤神模仿R语⾔⾥⾯的ggplot2,在python库⾥开发的⼀个很强⼤的可视化库,可以绘制出很好看的库,相对于matplotlib更易上⼿,也更好调试。⽽且更有意思的是,由于plotnine库相对⼩众,许多查不到⽅法的可以直接去查询R语⾔⾥⾯的⼀些⽅法,基本上也可以对接的上。
司马昭之心路人皆知的典故之前也有⽂章介绍了plotnine的⼀些使⽤⽅法:plotnine绘制基本图像,plotnine绘制复杂图像,plotnine的主题库,⼤家可以看看。
1from plotnine import * ## 导⼊plotnine库
2
3## 绘制前加括号
4(
sofo5 ggplot(data,aes(x='x',y='value',fill='product')) ## 数据对象
6 + geom_bar(stat='identity',width=0.5) ## 绘制柱状图的API
7 + theme( ## 对绘图的表现进⾏调整
8 text = element_text(family = "SimHei"), ## 设置⿊体,可以显⽰中⽂
9 legend_direction ='horizontal', ## 图例⽔平呈现
10 legend_title = element_blank(), ## 图例标题不显⽰
11 legend_background = element_rect('none'), ## 图例没有背景⾊
12 legend_position = (0.52,0.83), ## 设置图例位置
13 figure_size = (9,5), ## 画布的⼤⼩
14 axis_title_x = element_blank(), ## X轴标题为空
15 axis_title_y = element_blank() ## Y轴标题为空
16 )
17)