Matplotlib绘图的基本操作
对于初步接触matplotlib绘图库的朋友来说,绘图的字体设置、轴标签设置、图例和标题是令人头疼的问题,但作为绘图的基础设置,我们有必要熟悉掌握。作为笔者第一个接触的绘图库,笔者根据以往的绘图经验,对以上几个方面进行总结。
主要内容有:画布大小设置、字体设置、轴标签设置、图例设置、标题设置
一、画布大小设定
python设置画布语法为(常用参数):
plt.figure(figsize = None, dpi = None, facecolor = None, edgecolor = None, frameon = True)
figsize:画布的宽和高,单位为英寸。例如figsize = (8, 6),生成8英寸宽,6英寸高的画布 dpi:画布分辨率。表示的是每英寸点数(1英寸≈2.54cm),默认即可,笔者习惯调至100 facecolor:背景颜色 edgecolor:边框颜色 frameon:是否显示边框 下图展示了生成画布为4英寸×3英寸,分辨率为100,背景色为'mistyrose'的图像。一般来说,前两个参数最常用。
import matplotlib.pyplot as plt
plt.figure(figsize = (4, 3), dpi = 100, facecolor = 'mistyrose')
plt.plot([1, 2, 3], [1, 2, 3])plt.show()
**下图是常用的颜色对照表,也可以使用十六进制颜色**
二、字体设置
在默认情况下,matplotlib是不支持中文格式的。例如下面代码:
plt.figure(figsize = (4, 3))
plt.plot([1, 2, 3], [1, 2, 3])
plt.title('测试图')
plt.show()
一般而言,我们可以在开头设置字体样式:
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] #设置默认字体样式
plt.figure(figsize = (4, 3))
plt.plot([1, 2, 3], [1, 2, 3])
plt.title('测试图')
plt.show()
但是,一般而言作图我们要求数字为Times New Roman,而文字为宋体等。我们可以保持默认字体样式,新建字体样式,在添加中文字体时调用新建的字体样式,其余的保持默认样式。新建字体样式代码如下:
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['Times New Roman'] #设置默认样式为新罗马
font1 = {'family' : 'Times New Roman','weight' : 'normal','size' : 20, 'style':'italic',} #新建字体样式1,设置字体为新罗马,大小为20号,斜体
font2 = {'family' : 'simsun','weight' : 'normal','size' : 15, 'style':'italic',} #新建字体样式2,设置字体为宋体,大小为15号,斜体(但是根据实验,斜体在中文并不适用)
plt.figure(figsize = (4, 3))
plt.plot([1, 2, 3], [1, 2, 3]) #轴标签仍然使用默认样式
plt.title('测试图', font2) #添加标题,利用2号样式
plt.show()
一般支持的字体有:Times New Roman;SimHei(黑体);Microsoft YaHei(微软雅黑);simsun(宋体),这些基本上能满足制图应用。
三、轴标签设置
以2015年全国各气象站点的pm2.5与模型预测的pm2.5浓度为例,选取前100个数据制作散点图。
import matplotlib.pyplot as plt
import matplotlib as mpl
rel_pm2_5 = data['pm2_5'][:100] #读取前100个真实值
pred_pm2_5 = data['pred_pm2_5'][:100] #读取前100个预测值
plt.scatter(rel_pm2_5, pred_pm2_5, color = 'k', s = 10, label = 'scatter figure')#scatter语法以后会说,color为散点颜色,s代表散点大小,label表示图例显示的文字plt.legend()
plt.show()
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
mpl.rcParams['font.sans-serif'] = ['Times New Roman'] #设置默认字体
font1 = {'family' : 'simsun','weight' : 'normal','size' : 18,'style':'italic'} #自定义字体样式
rel_pm2_5 = data['pm2_5'][:100]
pred_pm2_5 = data['pred_pm2_5'][:100]
plt.scatter(rel_pm2_5, pred_pm2_5, color = 'k', s = 10, label = 'scatter figure')
plt.xlim(0, 400) #设置x坐标的范围
plt.ylim(0, 400)
plt.xticks(range(0, 401, 100), size = 15) #设置x轴刻度字体大小和刻度,字体采用默认,刻度为[0, 100, 200, 300, 400]
plt.yticks(range(0, 401, 100), size = 15)
plt.xlabel('观测值', font1) #设置x轴标签,字体采用1号样式
plt.ylabel('预测值', font1)
plt.legend()
plt.show()
现需要将刻度[0, 100, 200, 300, 400]分别换为[A, B, C, D, E],仅需改动一句代码:
plt.xticks(range(0, 401, 100), ['A', 'B', 'C', 'D', 'E'], size = 15)
四、图例设置
图例语法为:
plt.legend(loc, bbox_to_anchor, ncol, title, shadow, fancybox, prop)
loc:位置参数,1表示右上,2表示左上,3表示左下,4表示右下,5表示右中,6表示左中,7表示右中(和5一样),8表示中下,9表示中上,10表示中部。(非必选参数,默认为最佳位置,示例:loc = 1) bbox_to_anchor:表示图例线框所在位置,bbox_to_anchor = (0.05, 0.95)表示把图例左上角对应坐标为(0.05x轴长度,0.95y轴长度)。(非必选参数) ncol:图例每行容纳的图例数。例如一个图中有多个线,就会有多个图例。(非必选参数,示例:ncol = 3) title:图例标题。(非必选参数) fancybox:值为True或False,图例边框显示圆角式还是直角,默认True。(非必选参数,示例:fancybox = True) prop:可以设置字体。例如:prop = {'family': 'Times New Roman', 'size': 14}表示字体为新罗马,大小为14。如果仅仅只设置字体大小,可以不用prop,直接用fontsize = 15即可。(非必选参数)
plt.legend(loc = 4, fontsize = 15) #设置位置为右下,字体为15号
五、标题设置
语法:plt.title()。将图9添加标题“散点图”,使用1号字体样式。
plt.title('散点图', font1)
可以看出标题设置成了1号样式指定的字体,我们也可以建立其他字体来设置不同的效果。
总结
本文总结了Matplotlib绘图的基本操作:画布大小设置、字体设置、轴标签设置、图例设置和标题设置。作为可视化的基本组成元素,我们需要熟练这些操作,加快可视化学习效率,美化我们的图像。
本篇到此结束,下一节将介绍Matplotlib的均匀绘图问题。此内容将在"python数据分析实践"公众号同步更新。如果您有更好的想法或对文章有其他建议,可以关注或评论留言。如果有想要了解其它的内容,也可以联系或评论,感谢您的阅读!
转载自:https://juejin.cn/post/7192888324212654138