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

以下文章来源于数据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",  ## 设置statckcategory_gap="50%"  ## 设置柱状图的宽度比例).add_yaxis("product2", ## 设置第2组数据图例list(data.value[data['product']=='product2']),  ## 导入第2组数据stack="123",  ## 设置statckcategory_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数据可视化:5种绘制柱状图表的方法(附源码)相关推荐

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

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于数据Magic,作者我不是小样 前言 python里面有很多优秀的可 ...

  2. python用表格中的数据画柱状图_Python数据可视化:5种绘制柱状图表的方法(附源码)...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于数据Magic,作者我不是小样 前言 python里面有很多优秀的可 ...

  3. python绘制柱状图设置间隔时间,Python数据可视化:5种绘制柱状图表的方法(附源码)...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于数据Magic,作者我不是小样 前言 python里面有很多优秀的可 ...

  4. python数据可视化之简单绘制简单折线图

    python数据可视化之简单绘制简单折线图 1. 首先安装matplotlib liunx安装命令: $ sudo apt-get install python3-matplotlib windows ...

  5. 使用python多线程获取代理IP(代理IP池,附源码)

    @[TOC]使用python多线程获取代理IP(代理IP池,附源码) 代理IP池 都说现在是大数据的时代,大多数的厂商会特别的注重自己家的数据安全问题,但同时,也有着许多的行业是需要大数据来做支撑的, ...

  6. 曝肝三天,两千行Python代码,制作B站视频下载工具(附源码)

    曝肝三天,两千行Python代码,制作B站视频下载工具(附源码) 文章目录 一.准备工作 二.预览 1.启动 2.解析 3.下载中 4.下载完成 5.结果 三.设计流程 1.bilibili_vide ...

  7. Python数据分析三剑客学习笔记Day6——matplotlib包的使用:数据可视化,简单绘制柱状图、曲线图、饼图、频率分布直方图

    本文是视频Python数据分析三剑客 数学建模基础 numpy.pandas.matplotlib的学习笔记. -------------------------------------------- ...

  8. Python数据可视化:如何创建柱状图

    一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形. 我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,分别使用matplo ...

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

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

  10. python 开发视频播放网站_python开发微电影视频网站教程附源码

    做为一个合格的Pythoner,只掌握一个框架是不够,如果你有过其它Python框架(例如django)的使用经验,对比不同框架的特性来学习,你将收获更多 当前信息若含有黄赌毒等违法违规不良内容,请点 ...

最新文章

  1. Streamr助你掌控自己的数据(2)——三种整合数据至Streamr的典型场景
  2. p2762-太空飞行计划问题【网络流,最大权闭合图,最小割】
  3. choiceformat_ChoiceFormat:数字范围格式
  4. Tomcat的默认连接器
  5. qt 判断路径非英文符号与非英文字符_Qt中,软件多语言国际化翻译的方法与步骤...
  6. perl 字符串删除末尾几个字符_perl 第六弹 变量 II
  7. 自学Android资料大放送
  8. 微信小程序中页面间跳转传参方式
  9. Java -Dfile.encoding=UTF-8 出现乱码问题原因分析
  10. VB6 Socket编程
  11. 邱锡鹏DL经典-神经网络与深度学习
  12. 人人都能学会数据分析-笔记
  13. sqlserver数据库限制用户登录失败次数
  14. WIFI基础知识-2.4GZH的信号为什么比5GHZ的信号好
  15. HTML <div> 标签的 align 属性 align=“absmiddle“
  16. unity-shader-2
  17. 某些函数改为了inline方式优化。开始写CCursor类。
  18. MacOS上安装有多个Java版本,如何卸载?
  19. 前后端部署在两台服务器 服务器配置要求_云海容错服务器经销商_一体化技术服务提供商...
  20. WML语言基础(WAP建站)二(转)

热门文章

  1. 用计算机pol计算方位角,卡西欧计算方位角 计算器算方位角.doc
  2. Linux第一个正式版本,你安装的第一个Linux系统是什么版本的,成功没有啊?
  3. 稀土配合物Ln(DBM)3(Cz-PBM)|Tb(DBM)3(Cz-PBM)|Gd(DBM)3(Cz-PBM)|Ir(L)2(DBM-Ox)Ir(L)2(DBM-Cz)qiyue
  4. 《是男人就下100层》真的有隐藏剧情!B站up主数月破解
  5. 读书笔记:打造知识体系
  6. 现代 Nodejs ORM 库 Prisma 的使用详解
  7. CTWAP下程序崩溃
  8. java 实现linux进度条,Linux实现的进度条一(基本知识学习和简单功能)
  9. 学习linux 服务器安全这一篇文章就够了
  10. 多路视频直播播放器系统框架