前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matplotlib绘图的基础操作

Matplotlib绘图的基础操作

作者头像
python数据可视化之路
发布2023-02-23 21:07:18
1.4K0
发布2023-02-23 21:07:18
举报

对于初步接触matplotlib绘图库的朋友来说,绘图的字体设置、轴标签设置、图例和标题是令人头疼的问题,本文关于这些方面做出些许探讨,限于笔者能力有限,如有错误,敬请指正。

一、画布大小的设定

在论文或者PPT中,插入的图片对于大小都有要求。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'的图像。一般来说,前两个参数最常用。

代码语言:javascript
复制
import matplotlib.pyplot as plt
plt.figure(figsize = (4, 3), dpi = 100, facecolor = 'mistyrose')
plt.plot([1, 2, 3], [1, 2, 3])
plt.show()

图1 生成示例

颜色对照表如下图:

图2 颜色对照表

二、字体设置

在默认情况下,matplotlib是不支持中文格式的。例如下面代码:

代码语言:javascript
复制
plt.figure(figsize = (4, 3))
plt.plot([1, 2, 3], [1, 2, 3])
plt.title('测试图')
plt.show()

图3 中文字体示例

一般而言,我们可以在开头设置字体样式:

代码语言:javascript
复制
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()

图4 字体设置

但是,一般而言作图我们要求数字为Times New Roman,而文字为宋体等。我们可以保持默认字体样式,新建额外的字体样式,在添加中文字体时调用额外字体样式,其余的保持默认样式。新建字体样式代码如下:

代码语言:javascript
复制
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()

图5 设置字体样式的中文标题

一般支持的字体有:Times New Roman;SimHei(黑体);Microsoft YaHei(微软雅黑);simsun(宋体),这些基本上能满足制图应用。

三、轴标签设置

以2015年全国各气象站点的pm2.5与模型预测的pm2.5浓度为例,选取前100个数据制作散点图。

代码语言:javascript
复制
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()

图6 散点图

现需要将x轴坐标以间隔100进行设置,y轴也以100进行设置,并设置字体大小为15。x轴标签添加文字“观测值”,y轴标签添加文字“预测值”,使用宋体18号。

代码语言:javascript
复制
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()

图7 设置轴标签和刻度字体

现需要将刻度[0, 100, 200, 300, 400]分别换为[A, B, C, D, E],仅需改动一句代码:

代码语言:javascript
复制
plt.xticks(range(0, 401, 100), ['A', 'B', 'C', 'D', 'E'], size = 15)

图8 替换刻度

四、图例设置

图例语法为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.05*x轴长度,0.95*y轴长度)。(非必选参数)

ncol:图例每行容纳的图例数。例如一个图中有多个线,就会有多个图例。(非必选参数,示例:ncol = 3)

title:图例标题。(非必选参数)

fancybox:值为True或False,图例边框显示圆角式还是直角,默认True

。(非必选参数,示例:fancybox = True)

prop:可以设置字体。例如:prop = {'family': 'Times New Roman', 'size': 14}表示字体为新罗马,大小为14。如果仅仅只设置字体大小,可以不用prop,直接用fontsize = 15即可。(非必选参数)

代码语言:javascript
复制
plt.legend(loc = 4, fontsize = 15) #设置位置为右下,字体为15号

图9 图例设置

五、标题设置

语法:plt.title()。将图9添加标题“散点图”,使用1号字体样式。

代码语言:javascript
复制
plt.title('散点图', font1)

图10 标题设置

在以往的绘图中,字体,坐标轴,图例和图题以及字体的设置是经常使用的,掌握好基本知识可以帮助我们更好、更快绘图。感谢阅读!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python数据可视化之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档