python绘制柱状图设置间隔时间,Python数据可视化:5种绘制柱状图表的方法(附源码)...
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
以下文章来源于数据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种绘制柱状图表的方法(附源码)...相关推荐
- python量化策略源码_【Python量化投资】趋向系统指标策略 ADX、DMI指标用于股票池(附源码)...
原标题:[Python量化投资]趋向系统指标策略 ADX.DMI指标用于股票池(附源码) [什么是ADX] ADX(average directional indicator) 平均趋向指数,常用的趋 ...
- python模拟火车订票系统代码_Python3.6实现12306火车票自动抢票,附源码
原标题:Python3.6实现12306火车票自动抢票,附源码 Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已 ...
- 手把手教你用Python批量实现在Excel后里面新加一列,并且内容为excel 表名(附源码)...
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 打起黄莺儿,莫教枝上啼. 大家好, ...
- 我用Python逆向登录世界上最大的游戏平台,steam加密手段有多高明【内附源码】
大家好,我是辣条. 前言 今天带来爬虫实战的第30篇文章.在挑选游戏的过程中感受学习,让你突飞猛进.python爬虫实战:steam逆向RSA登录解析. 采集目标 网址:steam 工具准备 开发工具 ...
- 如何利用python抖音涨粉代码_Python实现抖音关键词热度搜索小程序(附源码)
原博文 2020-06-03 19:03 − 今天给大家带来一个抖音热词小程序,废话不多说,直接上代码 import requests import json import urllib.parse ...
- Python嘎嘎涨知识的7个小游戏,玩过的都爱不释手(附源码,直接运行就可)
前言 今天星期七,是一个快乐的日子.上班族不用上班,学生不用学习.我也不想分享太多的知识去为难大家,就给大家七个小游戏 吧,从周一玩到周日的那种,学会了记得来找我PK- 1.消消乐 玩法:三个相连就能 ...
- 【Python爬虫项目】链家房屋信息抓取(超详细适合新手练习附源码)
爬取链家房屋信息 爬取信息具体如下: 1.标题 2.位置 3.房屋介绍 4.房屋总价 5.房屋单价 一.检查网页源码 搜索标题中的关键字发现目标信息可以在源码中找到,所以我们请求该url网址就可以拿到 ...
- 【Python爬虫项目】新发地蔬菜水果等食品价格爬取(详细附源码)
新发地获取蔬菜水果等食品价格 爬取信息具体如下: 1.食品名称 2.最低价 3.最高价 4.平均价 5.规格 6.产地 7.单位 8.发布日期 1.检查网页源码 通过检查源码可以看出数据并不在网页源码 ...
- python机器学习之基于内容的推荐算法中推荐麻辣香锅菜品实战(附源码)
需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 推荐算法相信大家都不陌生,日常生活的各种APP都会根据你的喜好和特征来给你推荐,接下来详细介绍一下其中的基于内容的推荐算法 基于内容的模式起源于信 ...
最新文章
- 软件设计是决定软件性能的关键
- C语言编程的几个小注意事项1
- 定义EJB 3.1视图(本地,远程,无接口)
- (转) java 复制文件,不使用输出流复制,高效率,文件通道的方式复制文件
- php表示私有变量的是,PHP 访问私有和受保护的成员变量
- 电脑怎么彻底删除软件_电脑强力卸载工具,删除电脑无用软件,让电脑更加快捷顺畅...
- linux软件中心无法安eclipse,Ubuntu软件中心安装Eclipse无法启动的问题
- Hadoop学习之hdfs集群搭建详解
- 远程桌面连接:远程桌面由于以下原因之一无法连接到远程计算机
- 中文字体库转换成16X16点阵 另外附上ASCII码转换8X16点阵
- Spring AOP 循环应用(This means that said other beans do not use the final version of the bean..)
- Guawa的Splitter的工具类
- Android账号管理系统详解
- Itext5生成Pdf报表
- linux 下对SSD 进行读写测试
- sw转cad映射文件_SW转CAD图层映射
- 联想Thinkpad T480 电脑 Hackintosh 黑苹果efi引导文件
- PTA 7-4 平面向量加法
- 新星计划、原力计划新动态,大波的奖牌来袭速来领取
- 如何查询mysql的url_如何查看数据库的url