本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于数据Magic,作者我不是小样

前言

python里面有很多优秀的可视化库,matplotlib,seaborn,plotnine,pyecharts,bokeh,plotly,mapbox,geoplotlib,甚至专门用来数据处理的pandas都可以做一些简单的绘图。今天我们就用五种方法来绘制柱状图,分别是matplotlib,seaborn,plotnine,pyecharts,pandas。

首先我们先导入数据。

import pandas as pd ## 导入pandas库

list1=["名字很长的X轴标签1","名字很长的X轴标签2","名字很长的X轴标签3","名字很长的X轴标签4","名字很长的X轴标签5"]

list2= [12,23,33,3,33]

list3= [3,21,5,52,43]

data=pd.concat(

[

pd.concat([pd.Series(list1,name='x'),pd.Series(list2,name='value'),pd.Series(['product1']*5,name='product')],axis=1),

pd.concat([pd.Series(list1,name='x'),pd.Series(list3,name='value'),pd.Series(['product2']*5,name='product')],axis=1)

]

)

一、matplotlib

matplotlib是学习python数据分析必定接触到的一个库,是用来绘图的基础的库,也是其他各个可视化库的基本库之一。

import matplotlib.pyplot as plt #导入绘图库

#设置绘图直接显示

%matplotlib inline#设置绘图的整体表现

plt.style.use('ggplot') #设置绘图主题为 ggplot

plt.rcParams['font.sans-serif'] = ['SimHei'] #设置图像字体为黑体,同时可以显示中文

plt.rcParams['axes.unicode_minus'] = False #设置显示负号

#设置画布大小

plt.figure(figsize=(12, 7))#绘制柱状图--堆积柱状图#绘制下面的图

plt.bar(

left= data.x.unique(), ## 设置x轴内容

height = data.value[data['product'] == 'product1'], ## 设置y轴内容

label = 'product1' ## 设置标签

)#绘制上面的图

plt.bar(

left= data.x.unique(), ## 设置x轴内容

height = data.value[data['product'] == 'product2'], ## 设置y轴内容

bottom = data.value[data['product'] == 'product1'], ## 设置上面的图以下面的图的数据为底

label = 'product2' ## 设置标签

)## 设置图例标签,标签位置为上面中部,文字大小为15,图例是平铺(图例按两列排,即在一行)

plt.legend(loc='upper center', fontsize=15, ncol=2)

我们这样就绘制出了一张堆积柱状图,其实matplotlib绘制柱状图是比较简单的,难点就在于绘制堆积柱状图需要绘制多次,分别以前一个图的顶部为下一个图的底部,这样就可以得到一个堆积柱状图了。

二、seaborn

seaborn是基于matplotlib而做出来的一个可视化的封装库,相对于matplotlib的优点在于可以用比matplotlib更短的代码实现比较复杂的图像,缺点在于无法进行更强大的定制。

from plotnine import * ## 导入plotnine库

## 绘制前加括号

(

ggplot(data,aes(x='x',y='value',fill='product')) ## 数据对象

+ geom_bar(stat='identity',width=0.5) ## 绘制柱状图的API

+ theme( ## 对绘图的表现进行调整

text = element_text(family = "SimHei"), ## 设置黑体,可以显示中文

legend_direction ='horizontal', ## 图例水平呈现

legend_title = element_blank(), ## 图例标题不显示

legend_background = element_rect('none'), ## 图例没有背景色

legend_position = (0.52,0.83), ## 设置图例位置

figure_size = (9,5), ## 画布的大小

axis_title_x = element_blank(), ## X轴标题为空

axis_title_y = element_blank() ## Y轴标题为空

)

)

如果用matplotlib绘制分组柱状图,就需要与绘制堆积柱状图一样的方法,绘制多次,以前一个图的后部作为后一个图的前部,而用seaborn就可以用一行代码就可以实现,也不需要指定颜色和宽度,可以以一个比较合理的宽度进行显示。

当然,seaborn绘图也有其限制,如上图的堆积柱状图就无法绘制出来。

三、plotnine

R语言的绘图在数据分析的语言里一直是比较强的,而plotnine是德国的一个大神模仿R语言里面的ggplot2,在python库里开发的一个很强大的可视化库,可以绘制出很好看的库,相对于matplotlib更易上手,也更好调试。而且更有意思的是,由于plotnine库相对小众,许多查不到方法的可以直接去查询R语言里面的一些方法,基本上也可以对接的上。

之前也有文章介绍了plotnine的一些使用方法:plotnine绘制基本图像,plotnine绘制复杂图像,plotnine的主题库,大家可以看看。

from plotnine import * ## 导入plotnine库

## 绘制前加括号

(

ggplot(data,aes(x='x',y='value',fill='product')) ## 数据对象

+ geom_bar(stat='identity',width=0.5) ## 绘制柱状图的API

+ theme( ## 对绘图的表现进行调整

text = element_text(family = "SimHei"), ## 设置黑体,可以显示中文

legend_direction ='horizontal', ## 图例水平呈现

legend_title = element_blank(), ## 图例标题不显示

legend_background = element_rect('none'), ## 图例没有背景色

legend_position = (0.52,0.83), ## 设置图例位置

figure_size = (9,5), ## 画布的大小

axis_title_x = element_blank(), ## X轴标题为空

axis_title_y = element_blank() ## Y轴标题为空

)

)

plotnine可以设置很多参数,而且相对matplotlib这些参数也很多都清晰易懂,绘制出来的图也是简单大气,我在前面matplotlib的绘制加入的ggplot主题同样也是matplotlib里面模仿R语言ggplot库的。

不过plotnine的缺点主要就是相对小众,遇到的很多问题其实都需要查好久,而且目前也不是很完善,比如饼图就无法绘制,但依旧无法遮盖这个库的优秀。

四、pyecharts

Echarts是百度开源的一个可视化工具,被几个大神对接到python上面开发出了pyecharts库。这个库我现在也在学习,是个相当强大的可视化工具,不过其中有很多内容比较复杂,但是图表实现起来确实好看。

from pyecharts import options as opts ## 导入配置项,用来配置图像的各个表现

from pyecharts.charts import Bar ## 导入柱状图

from pyecharts.globals import ThemeType ## 导入主题选项,用来设置主题

c=(

Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT)) ## 绘制柱状图,设置主题为 LIGHT

.add_xaxis(list(data.x.unique())) ## 导入x轴数据

.add_yaxis("product1", ## 设置第1组数据图例

list(data.value[data['product']=='product1']), ## 导入第1组数据

stack="123", ## 设置statck

category_gap="50%" ## 设置柱状图的宽度比例

)

.add_yaxis("product2", ## 设置第2组数据图例

list(data.value[data['product']=='product2']), ## 导入第2组数据

stack="123", ## 设置statck

category_gap="50%" ## 设置柱状图的宽度比例

)

.set_series_opts(## 设置系列配置项

label_opts=opts.LabelOpts(is_show=False) ## 设置数据标签不显示

)

.set_global_opts(## 配置全局配置项

## 由于X轴内容比较长,设置一个倾斜,解决x轴标签内容过长的问题

xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15))

)

.render("stack_bar_percent.html") ## 保存为html格式

)

pyecharts可以实现很好看的图表显示,而且配置也很全,最关键的是,pyecharts可以以动态可选择的展示。

五、pandas

pandas是python数据处理里最常用的一个库,学习python数据分析绝对绕不开的一个库。不仅仅是数据处理的简便,在pandas里还集成了一些可视化的接口,实现简单的数据图表。

先将数据转换成我们可以作图的格式

data2=pd.concat(

[

data[['x']][data['product']=='product1'],

data[['value']][data['product']=='product1'].rename(columns={'value':'product1'}),

data[['value']][data['product']=='product2'].rename(columns={'value':'product2'})

],axis=1)

然后使用新生成的data2作图。

data2.plot(

kind='bar', ## 设置绘图的形状为柱状图

x='x', ## 设置x轴内容

stacked=True, ## 设置是否为堆积柱状图

figsize=(12,7), ## 设置画布大小

rot=15 ## 设置x轴内容角度

)## 设置图例标签,标签位置为上面中部,文字大小为15,图例是平铺(图例按两列排,即在一行)

plt.legend(loc='upper center',fontsize=15,ncol=2)

pandas作图的优势就在于可以直接用pandas里的API进行作图,缺点就在于无法定制更多的可视化内容,只能做一些简单的图表。

以上就是使用python不同的5个库绘制柱状图的方法,谢谢大家阅读。

用python绘制柱状图标题-Python数据可视化:5种绘制柱状图表的方法(附源码)...相关推荐

  1. 【Python】基金/股票 最大回撤率计算与绘图详解(附源码和数据)

    如果你想找的是求最大回撤的算法,请跳转:[Python] 使用动态规划求解最大回撤详解 [Python]基金/股票 最大回撤率计算与绘图详解(附源码和数据) 0. 起因 1. 大成沪深300指数A 5 ...

  2. 手把手教你用Python批量实现在Excel后里面新加一列,并且内容为excel 表名(附源码)...

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 打起黄莺儿,莫教枝上啼. 大家好, ...

  3. 用Python几行代码实现简单的人脸识别,10分钟完成(附源码)

    前言 今天,我们用Python实现简单的人脸识别技术! Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的.这里介绍的是准确 ...

  4. Python 自动化收取蚂蚁森林能量,不错过暗恋的她(附源码)

    作者 | 锅g头 来源 | Crossin的编程教室 最近在家远程工作,结果作息更混乱了,早上起不来,导致我蚂蚁森林能量天天被偷,严重影响我沙漠造树"大业".于是我决定用pytho ...

  5. 用Python玩人脸融合,想知道你未来孩子的长相?(附源码)

    这次花了点时间,将百度智能云里面的人脸识别功能与python结合,进行了一场实验.结果还是蛮有成就感的,过程也挺简单,不会复杂,说不定,你就能融合出你孩子的长相了耶~ 下面我们一起敲起键盘吧! 前期预 ...

  6. python 经验模态分解_经验模态分解下的日内趋势交易策略 附源码

    策略分析过程参考  广发证券的研究报告. 其中EMD库的安装参考 1.指标 在每天分钟数据积累mlen个bar的位置,将今日的数据通过EMD分解为噪声部分和趋势部分. 定义信噪比 SNR = std( ...

  7. 数据可视化大屏-特种设备综合监管 压力容器 源码下载 PSD下载

    介绍: 1.集成高德地图 地理信息系统(GIS).显示图标点.点击显示弹窗.更改地图主题背景色.街道.复选框,筛选切换显示类型状态. 2.echarts图表.地图.占比统计. 3.数据转换成图表所用数 ...

  8. 基于flask徐州市天气信息可视化分析系统【纯干货分享,附源码04600】

    摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针对天气信息等问题,对天气 ...

  9. cyq.data mysql_CYQ.Data4.5.5下载-CYQ.Data数据框架整套下载4.5.5 免费版【附源码】-东坡下载...

    CYQ.Data是路过秋天分享的一款支持超多数据库的数据框架类库,它界面简洁,操作简单,功能强大易用,支持多语言,多数据库,RSS,AOP等功能,小编这附上CYQ.Data4.5.5整套下载. CYQ ...

  10. 用Python标准库turtle画一头金牛,祝您新年牛气冲天!(附源码)

    今年是牛年,祝大家新年牛气冲天!嗨皮牛Year! 前几天在百度图片里下载了一张金牛的图片,就是封面的这张.想着用Python标准库turtle肯定可以画出这张图,所以说干就干,花两天时间实现了. 画图 ...

最新文章

  1. php setcookie使用变量,PHP setcookie() 函数
  2. Python与C语言的区别是什么?
  3. Sharepoin学习笔记—架构系列--04 Sharepoint的四种执行模型 1
  4. 数据库 流量切分_私域流量之社群运营技巧,社群运营技巧解析
  5. 支持上传文件的xhEditor for Typecho EX插件
  6. Linux如何建立用户(组)及调整用户(组)属性(案列+详细指令)
  7. XLSTransformer生成excel文件简单演示样例
  8. ValueError: Sample larger than population or is negative
  9. Minimum supported Gradle version is 5.4.1. Current version is 4.10.1. If using the gradle wrapper
  10. iOS开发打包上传报错ERROR ITMS-90096
  11. 在Chrome中使用非应用商店安装的扩展程序
  12. 美国服务器怎么样 RAKsmart美国服务器适合做什么
  13. WCF学习(2)- 契约
  14. python123测试4四位玫瑰数_心理测试:4朵玫瑰,你最喜欢哪一朵?测测你这辈子会有多少情债...
  15. 一篇文章学会使用摩斯密码,简单易懂,你也可以使用“降维打击”
  16. mysql 连续天数_mysql计算连续天数,mysql连续登录天数,连续天数统计
  17. Windows中的未处理异常
  18. 2020年7月最新阿里云服务器优惠卷哪里领?
  19. linux系统桌面文件消失,Ubuntu 更新文件 桌面 菜单丢失, 打算 换 mac os
  20. Genymotion最快的安卓模拟器 测试与模拟APP应用必备

热门文章

  1. python constructor_python – 无法成功启动boa-constructor
  2. java链式编程_Java 链式编程 和 lombok 实现链式编程
  3. 量子计算的基本原理——本质上是在操作薛定谔的猫(同时去运算和操作死+不死两种状态)...
  4. mac python request ssl错误解决
  5. golang 接口格式
  6. Sql面试题之三(难度:简单| 含答案)
  7. 【TP5笔记】TinkPHP5中引入资源文件
  8. JavaScript——ES6新特性
  9. jQuery 在Table中选择input之类的东西注意事项
  10. Tiny210编译和烧写u-boot步骤