网站首页 > 技术文章 正文
回顾
在走进Matplotlib世界(二)中,我们介绍了Matplotlib修改图表的一些属性,包括图表属性、坐标属性、线条属性等。如之前所说,对于Matplotlib图表属性的学习将一直贯穿于我们日常的工作和学习中,今天我们继续讨论几个Matplotlib的图表属性。
legend:图例
图例是图表修饰中一个比较常见的属性。Matplotlib中使用legend来实现,其中可传参数包括handles,labels,loc等。handles是图线序列,labels是要显示的图例标签,loc是图例显示的位置,共有11种可选,传参时用String或Code均可。?
给之前的图简单添加一个图例,位置用best,自适应方式。?
# 0、导入包 import matplotlib.pyplot as plt # 1、准备数据 x = [1, 2, 3, 4] y = [10, 20, 30, 40] # 2、创建图像 fig = plt.figure(figsize=(3, 3), dpi=100, facecolor=(0,1,0,1), edgecolor=(1,0,0,1), frameon=True, linewidth=1) # 3、绘图 ax1 = fig.add_subplot(111) ax1.plot(x, y) # 4、自定义设置 ax1.set_xlabel('x') ax1.set_ylabel('y') # 设置边界 ax1.set_xlim([1, 4]) ax1.set_ylim([10, 40]) # 设置图例 ax1.legend(['legend'], loc=0) # 5、保存图形(按需要使用) # plt.savefig(‘xxx.png’) # 6、显示图形 plt.show()
效果如下图所示。当然,legend除了上述所提的参数外,还可以使用可选参数,在日后的学习工作中遇到了再记录。?
grid:给图表添加网格
在作图时我们常常会通过给图表添加网格以美化图表,使用grid方法来实现。grid方法的参数包括b, which, axis以及其他可选参数。b是否显示网格线,当提供color,linestyle等可选参数时,会默认b为True。which应用网格线,可传'major', 'minor', 'both'分别表示使用主刻度、次刻度、两者。axis应用轴,可传 'x', 'y', 'both'分别表示使用x轴、y轴、两者。可选参数包括color、linestyle、linewidth等。下面添加一个简单的网格线:?
# 0、导入包 import matplotlib.pyplot as plt # 1、准备数据 x = [1, 2, 3, 4] y = [10, 20, 30, 40] # 2、创建图像 fig = plt.figure(figsize=(3, 3), dpi=100, facecolor=(0,1,0,1), edgecolor=(1,0,0,1), frameon=True, linewidth=1) # 3、绘图 ax1 = fig.add_subplot(111) ax1.plot(x, y) # 4、自定义设置 ax1.set_xlabel('x') ax1.set_ylabel('y') # 设置边界 ax1.set_xlim([1, 4]) ax1.set_ylim([10, 40]) # 设置图例 ax1.legend(['legend'], loc=0) # 添加网格线(使用主次刻度需要先设置,这里暂时忽略,直接用both) ax1.grid(True, which='both', axis='both', color='y', linestyle='--', linewidth=1) # 5、保存图形(按需要使用) # plt.savefig(‘xxx.png’) # 6、显示图形 plt.show()
可看到效果如下:?
MultipleLocator, FormatStrFormatter:设置主/次刻度
首先大致解释一下主刻度和次刻度的概念,简单来说,主刻度和次刻度就类似于一把直尺上厘米(cm)和毫米(mm)的关系一样,大单位就相当于主刻度,小单位相当于次刻度。Matplotlib中使用MultipleLocator生成刻度标签,FormatStrFormatter生成刻度标签格式,然后分别用set_major_locator、set_major_formatter、set_minor_locator、set_minor_formatter进行主/次刻度的设置。下面通过对x轴的修改来看一下主/次刻度的设置效果?,需要注意的是,使用MultipleLocator和FormatStrFormatter需要导入Matplotlib的ticker包。
# 0、导入包 import matplotlib.pyplot as plt from matplotlib.ticker import MultipleLocator, FormatStrFormatter # 1、准备数据 x = [1, 2, 3, 4] y = [10, 20, 30, 40] # 2、创建图像 fig = plt.figure(figsize=(3, 3), dpi=100, facecolor=(0,1,0,1), edgecolor=(1,0,0,1), frameon=True, linewidth=1) # 3、绘图 ax1 = fig.add_subplot(111) ax1.plot(x, y) # 4、自定义设置 ax1.set_xlabel('x') ax1.set_ylabel('y') # 设置边界 ax1.set_xlim([1, 4]) ax1.set_ylim([10, 40]) # 设置图例 ax1.legend(['legend'], loc=0) # 设置主刻度 次刻度 x_major_locator = MultipleLocator(1) #将x轴主刻度标签设置为1的倍数 ax1.xaxis.set_major_locator(x_major_locator) x_major_formatter = FormatStrFormatter('%.0f') #设置x轴标签文本的格式 ax1.xaxis.set_major_formatter(x_major_formatter) x_minor_locator = MultipleLocator(0.5) #将x轴次刻度标签设置为0.5的倍数ax.xaxis.set_minor_locator(xminorLocator) ax1.xaxis.set_minor_locator(x_minor_locator) # 添加网格线 ax1.grid(True, which='both', axis='both', color='y', linestyle='--', linewidth=1) # 5、保存图形(按需要使用) # plt.savefig(‘xxx.png’) # 6、显示图形 plt.show()
结果如下。可以看到x轴上1.5、2.5、3.5的位置上已经出现了次刻度。?
text:在坐标系上添加文本
?? 当我们要在图表上的指定位置添加文本时,可以使用text方法。text方法的参数包括x,y,s,fontdict,withdash等。x,y是放置文本的位置。s是要添加的文本。fontdict用于覆盖默认文本属性的字典,例如fontsize等,如果fontdict为none,则默认值由rc参数(matplotlib.rcParams,rcParams是pylot使用rc配置文件来自定义图形各种默认属性的方法,也叫rc配置或rc参数,通过rc参数可以修改图表的默认属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等)决定。withdash创建一个TextWithDash实例用于代替Text实例。下面我们在(2, 20)这个位置添加一个文本。?
# 0、导入包 import matplotlib.pyplot as plt # 1、准备数据 x = [1, 2, 3, 4] y = [10, 20, 30, 40] # 2、创建图像 fig = plt.figure(figsize=(3, 3), dpi=100, facecolor=(0,1,0,1), edgecolor=(1,0,0,1), frameon=True, linewidth=1) # 3、绘图 ax1 = fig.add_subplot(111) ax1.plot(x, y) # 4、自定义设置 ax1.set_xlabel('x') ax1.set_ylabel('y') # 设置边界 ax1.set_xlim([1, 4]) ax1.set_ylim([10, 40]) # 设置图例 ax1.legend(['legend'], loc=0) # 添加网格线 ax1.grid(True, which='both', axis='both', color='y', linestyle='--', linewidth=1) # 添加注释 plt.text(2, 20, 'text', fontsize=10) # 5、保存图形(按需要使用) # plt.savefig(‘xxx.png’) # 6、显示图形 plt.show()
运行效果如下:?
最后再简单介绍几个比较常用的属性方法,matplotlib.rcParams['xtick_direction'] 、matplotlib.rcParams['ytick.direction']可以设置刻度的方向。plt.axis('off')可以关闭坐标轴,如果想只关闭x轴或y轴,可以使用frame = plt.gca()获取当前子图,然后用frame.axes.get_xaxis().set_visible(False)或frame.axes.get_yaxis().set_visible(False)对x轴或y轴设置是否显示。
我们在学习Matplotlib作图时,可以通过查阅官方文档尽可能多地去尝试图表的各种属性设置,不断练习才能更好的掌握,最后作出漂亮的图也是很有成就感的。毕竟一张图表胜过千言万语呀~
猜你喜欢
- 2024-10-14 Python之Matplotlib数据可视化一:简易线形图
- 2024-10-14 圆:circle-sin-cos动画的matplotlib
- 2024-10-14 python 100天 68 利用Python绘制两个波形正弦sin函数相关性
- 2024-10-14 画直线不简单!python-matplotlib告诉你为什么
- 2024-10-14 用Python下一场流星雨,女生看了都哭了
- 2024-10-14 手把手教你使用Numpy、Matplotlib、Scipy等5个Python库
- 2024-10-14 走进Matplotlib世界(一)(matplotlib.org)
- 2024-10-14 Python 数据分析——matplotlib 坐标变换和注释
- 2024-10-14 利用axe对象绘制地图局部缩放图(下面几种建模对象能通过基本实体工具直接绘制的是)
- 2024-10-14 Python动态绘图的方法(上)(canvas python动态绘图)
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)