matplotlib.pyplot.bar()与barh()绘制条形图
目录
一、matplotlib.pyplot.bar()语法
二、 matplotlib.pyplot.barh()语法
三、绘制条形图
①绘制简单垂直条形图(pyplot编程方式)
②绘制简单水平条形图 (面向对象编程方式)
③绘制带样式的垂直条形图(pyplot与面向对象结合编程方式)
④绘制带样式的水平条形图(面向对象编程方式)
⑤分组条形图(面向对象编程方式)
⑥堆叠条形图(面向对象编程方式)
⑦对称条形图(面向对象与pyplot结合编程方式)
编程方式选择面向对象与pyplot方式最佳
一、matplotlib.pyplot.bar()语法
说明:matplotlib.pyplot.bar()绘制的都是垂直条形图
ax.bar(x, height, width=0.8, bottom=None, *, align='center',
data=None, **kwargs)
plt.bar(x, #x轴坐标height, #主体高度width=0.8, #指定条形宽度 默认值:0.8bottom=0.0, #指定y轴高度起始值 默认值:0.0align='center' or 'edge', #指定对齐方式:center:中心堆成 edge:边缘对称alpha, #指定透明度color, #指定条形颜色ec, #指定条形图边缘颜色(是edgecolor的缩写)lw, #指定条形图边缘线宽(是linewidth的缩写)ls, #指定条形图边缘线条样式(是linestyle的缩写)fill=True or False, #是否填充颜色yerr, #指定误差大小,用于在条形图上添加误差线ecolor, #指定误差线的颜色joinstyle='miter' or 'round' or 'bevel', #指定条形图边角连接模式hatch={'/', '\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}, #指定条形阴影label #指定图例的显示内容
)
参数:joinstyle
from matplotlib._enums import JoinStyle
JoinStyle.demo()
二、 matplotlib.pyplot.barh()语法
说明:matplotlib.pyplot.barh()绘制的都是水平条形图
- y,width,height与bar()里的x,height,width相反
- left等同于bar()里的bottom 不同的时left作用于x轴,bottom作用于y轴
- 其他参数作用与bar()参数一致
barh(y, width, height=0.8, left=None, *, align='center', **kwargs)
plt.barh(y, #y轴坐标width, #主体长度height=0.8, #指定条形宽度 默认值:0.8left=0.0, #指定x轴高度起始值 默认值:0.0align='center' or 'edge', #指定对齐方式:center:中心堆成 edge:边缘对称alpha, #指定透明度color, #指定条形颜色ec, #指定条形图边缘颜色(是edgecolor的缩写)lw, #指定条形图边缘线宽(是linewidth的缩写)ls, #指定条形图边缘线条样式(是linestyle的缩写)fill=True or False, #是否填充颜色yerr, #指定误差大小,用于在条形图上添加误差线ecolor, #指定误差线的颜色joinstyle='miter' or 'round' or 'bevel', #指定条形图边角连接模式hatch={'/', '\\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}, #指定条形阴影label #指定图例的显示内容
)
三、绘制条形图
①绘制简单垂直条形图(pyplot编程方式)
import matplotlib.pyplot as plt
import numpy as npx=np.arange(0,11)
y=np.random.random(11)# xticks设置x轴刻度值
plt.xticks(x)
plt.bar(x,y)plt.show()
②绘制简单水平条形图 (面向对象编程方式)
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif']=['FangSong']plt.figure(figsize=(5,5))# 绘制一个5*5的画布
ax=plt.axes()x=np.arange(0,6)
y=np.random.random(6)ax.barh(x,y)plt.show()
③绘制带样式的垂直条形图(pyplot与面向对象结合编程方式)
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['FangSong']fig=plt.figure(figsize=(12,8))
ax=plt.axes()x=['我们的父辈','这个杀手不太冷静','肖申克的救赎','狙击手','辛德勒的名单','长津湖']
y=[9.6,7.8,9.7,7.8,9.5,8.9]ax.bar(x,y,width=0.5,color='#EEE8AA',ec='#A0522D',linewidth='5',yerr=0.5,ecolor='#800000',align='center',bottom=0,alpha=0.5,linestyle='-,fill=True,joinstyle='bevel',hatch='/',
label='电影评分图例')for x,y in zip(x,y):ax.text(x,y,s=y,size=20) # 添加条形标签plt.xticks(size=15) # 修改X轴刻度值字体大小
plt.yticks(size=20) # 修改y轴刻度值字体大小
plt.rcParams.update({'font.size':15}) # 设置图例字体大小plt.title('电影评分图例展示',fontsize=25) # 设置图标标题
plt.xlabel('电影名称',fontsize=20) # 设置x轴标题
plt.ylabel('电影评分',fontsize=20) # 设置y轴标题ax.grid() # 显示网格线
ax.legend() # 显示图例
plt.show()
④绘制带样式的水平条形图(面向对象编程方式)
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif']=['FangSong']plt.figure(figsize=(8,8))# 绘制一个8*8的画布
ax=plt.axes()name=['日用品','化妆品','生活费','水电费','其他开支']
spend=[500,1000,2000,200,500]ax.barh(name,spend,height=0.5,color='#EEE8AA',ec='#A0522D',linewidth='5',align='center',left=0,alpha=0.5,linestyle='-',fill=True,joinstyle='bevel',hatch='o',label='消费金额')ax.set_xticks(spend,size=15) # 修改X轴刻度值字体大小
ax.set_yticks(name,size=20) # 修改y轴刻度值字体大小ax.set_title('日常开支水平条形图',fontsize=30) # 设置图标标题
ax.set_xlabel('消费金额(元)',fontsize=20) # 设置x轴标题
ax.set_ylabel('支出方式',fontsize=20) # 设置y轴标题ax.grid(axis='x') # 设置仅显示x轴网格线
ax.legend() # 显示图例
plt.show()
⑤分组条形图(面向对象编程方式)
注意:绘制分组条形图时,尽量用一个变量名来接收,方便后期修改。(如下图bar_width=0.2)
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif']=['FangSong'] # 设置正常显示中文 字体为仿宋 plt.figure(figsize=(13,10)) # 设置画布 大小为13*10
ax=plt.axes()
name=['小红','小绿','小黄','小紫']
first=[50,70,80,60] # 第一次语文成绩
second=[60,80,75,65] # 第二次语文成绩
third=[75,90,60,70] # 第三次语文成绩bar_width=0.2 # 条形宽度ax.bar(name,first,label='第一次语文成绩',width=bar_width,align='center',color='#00FA9A')
ax.bar(np.arange(4)+bar_width,second,label='第二次语文成绩',width=bar_width,align='center',color='#EEE8AA')
ax.bar(np.arange(4)+bar_width*2,third,label='第三次语文成绩',width=bar_width,align='center',color='#FFB6C1')ax.set_xticks(name) # 设置x轴标签
ax.set_yticks(np.arange(0,110,10)) # 设置y轴标签ax.set_title('语文成绩分组图',fontsize=30) # 设置标题
ax.set_xlabel('姓名',fontsize=20) # 设置x轴标签
ax.set_ylabel('成绩',fontsize=20) # 设置y轴标签ax.legend()# 显示图例
plt.show()
⑥堆叠条形图(面向对象编程方式)
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif']=['FangSong']fig=plt.figure(figsize=(10,9))
ax=plt.axes()name=['日用品','化妆品','生活费','水电费','其他开支']
first=[500,1000,2000,200,500]
second=[300,1500,1800,250,800]
third=[400,800,2200,200,600]bar_width=0.3ax.bar(np.arange(5),first,width=bar_width,label='第一个月花费金额',color='#FFDA89')
ax.bar(np.arange(5),second,bottom=first,width=bar_width,label='第二个月花费金额',color='#F4A460')
ax.bar(np.arange(5),third,bottom=np.array(first)+np.array(second),width=bar_width,label='第三个月花费金额',color='#8B0000')ax.set_xticks(np.arange(5),name)ax.set_title('三个月花销堆叠图',size=30)
ax.set_xlabel('支出方式',size=20)
ax.set_ylabel('支出金额(元)',size=20)plt.legend()
plt.show()
⑦对称条形图(面向对象与pyplot结合编程方式)
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif']=['FangSong']
plt.rcParams['axes.unicode_minus'] = False # 设置符号显示正常fig=plt.figure(figsize=(10,9))
ax=plt.axes()hobby=['打篮球','逛街','打游戏','打羽毛球','踢足球','看电影']
hobby_man=np.array([10,1,15,13,11,6])
hobby_woman=np.array([2,20,5,15,1,10])ax.barh(range(6),hobby_man,label='男生',color='#191970',height=0.3,align='center')
ax.barh(range(6),-hobby_woman,label='女生',color='#FFB6C1',height=0.3,align='center')plt.yticks(range(6),hobby)
plt.xticks(np.arange(-20,25,5))plt.title('两极分化对称条形图',size=30)
plt.ylabel('爱好',size=20)
plt.xlabel('人数',size=20)plt.legend()
plt.show()
总结:编程方式选择面向对象编程与pyplot编程方式结合在一起为最佳
matplotlib.pyplot.bar()与barh()绘制条形图相关推荐
- matplotlib.pyplot.bar()条形图
bar()函数不能直接分类,它的横坐标仍然是标量刻度,要用xticks来映射分类. matplotlib.pyplot.bar(left, height, width=0.8, bottom=None ...
- 10【matplotlib常用统计图】02绘制条形图
案例 假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8" ...
- Matplotlib.pyplot参数(条形图,直方图,饼图,散点图)
1. 条形图 bar() 官方文档网址:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.bar.html#matplotlib.scatter ...
- 【python数据可视化笔记】——matplotlib.pyplot()
目 录 1 %matplotlib inline 2 matplotlib图例中文乱码以及坐标负号显示 2.1 快速解决办法 2.2 永久解决办法 2.2.1 找到自己想要的中文字体 2.2 ...
- 最全Python绘制条形图(柱状图)
条形图(bar chart)也称为柱状图,是一种以长方形的长度为变量的统计图表,长方形的长度与它所对应的数值呈一定比例. 一.导入绘图数据 首先导入绘图所需的数据. import os impo ...
- Python绘制条形图
Python数据分析(三) (一)绘制条形图 绘制条形用的是matplotlib.pyplot下的bar方法 绘制横向条形图用的是matplotlib.pyplot下的barh方法 题目:绘制内地电影 ...
- python模块matplotlib.pyplot用法_03_Python 使用Matplotlib绘图
2019.5.13 不知不觉,已经进入第12周了,Python数据分析的学习现今也已经进入了中后期,在继上周进行了Numpy的康威生命游戏的编写之后:紧接着进行的学习就是利用Python的Matplo ...
- matplotlib.pyplot可视化(官方API)
线 import matplotlib.pyplot as plt x = [1,2,3,4,5,6] y = [3,4,6,7,3,2] plt.xlabel('x') plt.ylabel('y' ...
- Python — matplotlib.pyplot 绘图模块及常用函数
目录 1. 基本用法与折线图 pyplot 模块的常用函数 折线图函数: matplotlib.pyplot.plot() 常用 format_string 参数 常用函数 grid () 控制各轴网 ...
最新文章
- PowerDesigner连接Oracle数据库生成数据模型【本地连接方式】
- 分词 正文提取 java
- python 语言教程(4)元组
- 树莓派下的apache
- 问:新来的同事都自愿996,这是内卷还是努力啊?
- 衡量发动机性能的重要指标—升功率
- 博士论文:教你如何给女朋友送礼物
- python适合编程语言吗_为什么说python是适合新手入门的编程语言
- JavaScript事件---事件入门
- iOS底层探索之类的结构(中):bits
- 番茄助手破解找到VA_X.dll的位置
- 002--YAML工具
- linux中.sh文件是什么?怎么执行?
- java netcdf精度_NetCDF 介绍
- 推荐《天才在左,疯子在右》
- Anaconda/Conda创建环境时报错的解决方案
- HTTP状态 500 - 内部服务器错误java.lang.NullPointerException
- 对逻辑斯蒂回归的一些细节剖析
- octobercms mysql_手把手教你选择一款适合自己的CMS/博客程序
- html浏览器在哪里,javascript在哪儿启用?
热门文章
- pg 9.3 新关键字 lateral 的用法.
- “小爱同学”商标遭抢注,小米上诉被驳回
- 扩容卡怎么恢复实际容量_Win10电脑硬盘数据损坏了怎么办?电脑数据恢复分享!...
- 联想工作站加装固态盘安装win10
- 三天打鱼两天晒网问题Python求解
- Android微信iwxapi.registerApp崩溃
- python比java好学吗-到底学Python还是Java?一张图PK明白!
- Sketch Cache Cleaner Mac(Sketch缓存清理助手)
- 计算机的好处和坏处的英语作文,The Merits And Demerits Of Computer_电脑的利弊英语作文150字...
- C#界面里Form.Icon 属性的使用