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

以下文章来源于数据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量化投资】趋向系统指标策略 ADX、DMI指标用于股票池(附源码)...

    原标题:[Python量化投资]趋向系统指标策略 ADX.DMI指标用于股票池(附源码) [什么是ADX] ADX(average directional indicator) 平均趋向指数,常用的趋 ...

  2. python模拟火车订票系统代码_Python3.6实现12306火车票自动抢票,附源码

    原标题:Python3.6实现12306火车票自动抢票,附源码 Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已 ...

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

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

  4. 我用Python逆向登录世界上最大的游戏平台,steam加密手段有多高明【内附源码】

    大家好,我是辣条. 前言 今天带来爬虫实战的第30篇文章.在挑选游戏的过程中感受学习,让你突飞猛进.python爬虫实战:steam逆向RSA登录解析. 采集目标 网址:steam 工具准备 开发工具 ...

  5. 如何利用python抖音涨粉代码_Python实现抖音关键词热度搜索小程序(附源码)

    原博文 2020-06-03 19:03 − 今天给大家带来一个抖音热词小程序,废话不多说,直接上代码 import requests import json import urllib.parse ...

  6. Python嘎嘎涨知识的7个小游戏,玩过的都爱不释手(附源码,直接运行就可)

    前言 今天星期七,是一个快乐的日子.上班族不用上班,学生不用学习.我也不想分享太多的知识去为难大家,就给大家七个小游戏 吧,从周一玩到周日的那种,学会了记得来找我PK- 1.消消乐 玩法:三个相连就能 ...

  7. 【Python爬虫项目】链家房屋信息抓取(超详细适合新手练习附源码)

    爬取链家房屋信息 爬取信息具体如下: 1.标题 2.位置 3.房屋介绍 4.房屋总价 5.房屋单价 一.检查网页源码 搜索标题中的关键字发现目标信息可以在源码中找到,所以我们请求该url网址就可以拿到 ...

  8. 【Python爬虫项目】新发地蔬菜水果等食品价格爬取(详细附源码)

    新发地获取蔬菜水果等食品价格 爬取信息具体如下: 1.食品名称 2.最低价 3.最高价 4.平均价 5.规格 6.产地 7.单位 8.发布日期 1.检查网页源码 通过检查源码可以看出数据并不在网页源码 ...

  9. python机器学习之基于内容的推荐算法中推荐麻辣香锅菜品实战(附源码)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 推荐算法相信大家都不陌生,日常生活的各种APP都会根据你的喜好和特征来给你推荐,接下来详细介绍一下其中的基于内容的推荐算法 基于内容的模式起源于信 ...

最新文章

  1. 软件设计是决定软件性能的关键
  2. C语言编程的几个小注意事项1
  3. 定义EJB 3.1视图(本地,远程,无接口)
  4. (转) java 复制文件,不使用输出流复制,高效率,文件通道的方式复制文件
  5. php表示私有变量的是,PHP 访问私有和受保护的成员变量
  6. 电脑怎么彻底删除软件_电脑强力卸载工具,删除电脑无用软件,让电脑更加快捷顺畅...
  7. linux软件中心无法安eclipse,Ubuntu软件中心安装Eclipse无法启动的问题
  8. Hadoop学习之hdfs集群搭建详解
  9. 远程桌面连接:远程桌面由于以下原因之一无法连接到远程计算机
  10. 中文字体库转换成16X16点阵 另外附上ASCII码转换8X16点阵
  11. Spring AOP 循环应用(This means that said other beans do not use the final version of the bean..)
  12. Guawa的Splitter的工具类
  13. Android账号管理系统详解
  14. Itext5生成Pdf报表
  15. linux 下对SSD 进行读写测试
  16. sw转cad映射文件_SW转CAD图层映射
  17. 联想Thinkpad T480 电脑 Hackintosh 黑苹果efi引导文件
  18. PTA 7-4 平面向量加法
  19. 新星计划、原力计划新动态,大波的奖牌来袭速来领取
  20. 如何查询mysql的url_如何查看数据库的url

热门文章

  1. 中文Mac数据恢复软件哪里找?看这里!
  2. 懒人必备!五款好用软件推荐,你用过其中几个?
  3. Jeesite之treeselect的使用
  4. 2020 年新基建七大领域 数据“新基建”
  5. 【VPN(虚拟专用网)攻略大全】
  6. 【SpringBoot】〖自定义〗SpringBoot十二星座启动图标
  7. k8s 查看 pod 网段
  8. Android Doze和应用待机优化
  9. 人效分析指标有哪些?
  10. 记录一次美团+小米+VIPKId+CVTE的Java后台开发面试经历