我是靠谱客的博主 忧郁小蝴蝶,最近开发中收集的这篇文章主要介绍Matplotlib Python 画图工具包教程学习笔记3 柱状图和子图1.柱状图2. 绘制子图写在最后,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 1.柱状图
- 1.1 plt.bar
- 1.2 测试样例
- 1.3 测试结果
- 2. 绘制子图
- 2.1 方法一:三点定位
- 2.1.1 测试代码
- 2.1.2 测试结果
- 2.2 方法二:subplot2grid
- 2.2.1 测试效果
- 2.3方法三:gridspec
- 2.4 方法四:subplots (注意这里比subplot结尾多了s)
- 2.5 测试源代码
- 写在最后
1.柱状图
1.1 plt.bar
柱状图主要使用plt.bar函数,与其他函数相类似,这个函数也是采用横纵坐标相结合的方式,传进去的第一个参数为横坐标,第二个参数为纵坐标(在图中显示为纵坐标的宽度)
- facecolor:设置柱状图的颜色
- edgecolor:设置柱状图边框的颜色
1.2 测试样例
# -*- coding:utf-8 -8-
"""
Author: Leung
Date: 2021--08--23
"""
import matplotlib.pyplot as plt
import numpy as np
n = 12
X = np.arange(n)
Y1 = (1-X/float(n))*np.random.uniform(0.5,1.0,n)
Y2 = (1-X/float(n))*np.random.uniform(0.5,1.0,n)
#画柱状图
plt.bar(X,+Y1,facecolor='#9999ff',edgecolor = 'white')#向上
plt.bar(X,-Y2,facecolor='#ff9999',edgecolor = 'white')#向下
for x,y in zip(X,Y1):
# ha : horizontal alignment 水平对齐
plt.text(x,y+0.05,'%.2f'%y,ha = 'center',va = 'bottom')
#注意这里的Y要取相反数向下
for x,y in zip(X,Y2):
# ha : horizontal alignment 水平对齐
plt.text(x,-y-0.05,'-%.2f'%y,ha = 'center',va = 'top')
plt.xlim(-.5,n)
plt.xticks(())
plt.ylim(-1.25,1.25)
plt.yticks(())
plt.show()
1.3 测试结果
2. 绘制子图
子图的绘制是指在原始的图像中分开多个部分,在每个部分中都有自己的一个图像
2.1 方法一:三点定位
在plt.subplot中传进去3个参数,即可定位子图
2.1.1 测试代码
# -*- coding:utf-8 -8-
"""
Author: FeverTwice
Date: 2021--08--23
"""
import matplotlib.pyplot as plt
import numpy as np
plt.figure()
# #分成两行两列以后我在第一个位置上画东西
# plt.subplot(2,2,1)
# plt.plot([0,1],[0,1])
#
# #第2个位置上画东西
# plt.subplot(2,2,2)
# plt.plot([0,1],[0,2])
#
# plt.subplot(2,2,3)
# plt.plot([0,1],[0,3])
#
# plt.subplot(2,2,4)
# plt.plot([0,1],[0,4])
#分成两行以后我直接在第一列上画东西
plt.subplot(2,1,1)
plt.plot([0,1],[0,1])
#第2个位置上画东西
plt.subplot(2,3,4)
plt.plot([0,1],[0,2])
plt.subplot(2,3,5)
plt.plot([0,1],[0,3])
plt.subplot(2,3,6)
plt.plot([0,1],[0,4])
plt.show()
2.1.2 测试结果
2.2 方法二:subplot2grid
#第一个参数:整个grid有3行3列,从0,0开始,且列跨度为3,行跨度为1
ax1 = plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)
注意,使用这种方法之后,以前控制图片属性的句柄前面要加上set_
如:
ax1.title() —> ax1.set_title()
2.2.1 测试效果
2.3方法三:gridspec
主要使用二维数组索引的方式来对子图的位置进行相应的定位
gs = gridspec.GridSpec(3,3)
#使用索引的方式
ax1 = plt.subplot(gs[0,:])
2.4 方法四:subplots (注意这里比subplot结尾多了s)
这个方法主要通过在subplot函数对母图进行分割的基础上,设置横纵坐标需不需要合并的方法来实现的
f,((ax11,ax12),(ax21,ax22))=plt.subplots(2,2,sharex=True) #我们要不要共享X或者Y轴
2.5 测试源代码
# -*- coding:utf-8 -8-
"""
Author: FeverTwice
Date: 2021--08--23
"""
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.gridspec as gridspec
# method 1: subplot2grid
################################
plt.figure(1)
#第一个参数:整个grid有3行3列,从0,0开始,且列跨度为3,行跨度为1
ax1 = plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)
ax1.plot([1,2],[1,2])
ax1.set_title('ax1') #以前的点全部变成set
ax2 = plt.subplot2grid((3,3),(1,0),colspan=2)
ax2.plot([1,2],[3,2])
ax2.set_title('ax2') #以前的点全部变成set
ax3 = plt.subplot2grid((3,3),(1,2),rowspan=2)
ax4 = plt.subplot2grid((3,3),(2,0))
ax5 = plt.subplot2grid((3,3),(2,1))
# method 2: gridspec
################################
plt.figure(2)
gs = gridspec.GridSpec(3,3)
#使用索引的方式
ax1 = plt.subplot(gs[0,:])
ax2 = plt.subplot(gs[1,:2])
ax3 = plt.subplot(gs[1:,2])
ax4 = plt.subplot(gs[-1,0])
ax5 = plt.subplot(gs[-1,-2])
# method 3: subplots // easy to define structure
################################
f,((ax11,ax12),(ax21,ax22))=plt.subplots(2,2,sharex=True) #我们要不要共享X或者Y轴
ax11.scatter([1,2],[1,2])
plt.tight_layout()
plt.show()
写在最后
本文章为【莫烦Python】Matplotlib Python 画图教程课程对应的一些课堂笔记,并参考了Matplotlib的开发者文档,仅为各位同志学习参考之用
各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟! <(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知
最后
以上就是忧郁小蝴蝶为你收集整理的Matplotlib Python 画图工具包教程学习笔记3 柱状图和子图1.柱状图2. 绘制子图写在最后的全部内容,希望文章能够帮你解决Matplotlib Python 画图工具包教程学习笔记3 柱状图和子图1.柱状图2. 绘制子图写在最后所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复