Python学习笔记第六十三天(Matplotlib 轴标签和标题)

Python学习笔记第六十三天

Matplotlib 轴标签和标题

我们可以使用 xlabel() 和 ylabel() 方法来设置 x 轴和 y 轴的标签。

python 复制代码
# 实例 1
import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)

plt.xlabel("x - label")
plt.ylabel("y - label")

plt.show()

标题

我们可以使用 title() 方法来设置标题。

python 复制代码
# 实例 2
import numpy as np
import matplotlib.pyplot as plt

x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)

plt.title("RUNOOB TEST TITLE")
plt.xlabel("x - label")
plt.ylabel("y - label")

plt.show()

图形中文显示

Matplotlib 默认情况不支持中文,我们可以使用以下简单的方法来解决。

这里我们使用思源黑体,思源黑体是 Adobe 与 Google 推出的一款开源字体。

官网:https://source.typekit.com/source-han-serif/cn/

GitHub 地址:https://github.com/adobe-fonts/source-han-sans/tree/release/OTF/SimplifiedChinese

打开链接后,在里面选一个就好了:

可以下载个 OTF 字体,比如 SourceHanSansSC-Bold.otf,将该文件文件放在当前执行的代码文件中:

SourceHanSansSC-Bold.otf 文件放在当前执行的代码文件中:

python 复制代码
# 实例 3
import numpy as np 
from matplotlib import pyplot as plt 
import matplotlib
 
# fname 为 你下载的字体库路径,注意 SourceHanSansSC-Bold.otf 字体的路径
zhfont1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf") 
 
x = np.arange(1,11) 
y =  2  * x +  5 
plt.title("测试", fontproperties=zhfont1) 
 
# fontproperties 设置中文显示,fontsize 设置字体大小
plt.xlabel("x 轴", fontproperties=zhfont1)
plt.ylabel("y 轴", fontproperties=zhfont1)
plt.plot(x,y) 
plt.show()

此外,我们还可以使用系统的字体:

python 复制代码
# 实例 4
from matplotlib import pyplot as plt
import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])

for i in a:
    print(i)
# 打印出你的 font_manager 的 ttflist 中所有注册的名字,找一个看中文字体例如:STFangsong(仿宋),然后添加以下代码即可:

plt.rcParams['font.family']=['STFangsong']

此外我们还可以自定义字体的样式:

python 复制代码
# 实例 5
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
 
# fname 为 你下载的字体库路径,注意 SourceHanSansSC-Bold.otf 字体的路径,size 参数设置字体大小
zhfont1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf", size=18)
font1 = {'color':'blue','size':20}
font2 = {'color':'darkred','size':15}
x = np.arange(1,11)
y =  2  * x +  5

# fontdict 可以使用 css 来设置字体样式
plt.title("测试", fontproperties=zhfont1, fontdict = font1)
 
# fontproperties 设置中文显示,fontsize 设置字体大小
plt.xlabel("x 轴", fontproperties=zhfont1)
plt.ylabel("y 轴", fontproperties=zhfont1)
plt.plot(x,y)
plt.show()

标题与标签的定位

  • title() 方法提供了 loc 参数来设置标题显示的位置,可以设置为: 'left', 'right', 和 'center', 默认值为 'center'。
  • xlabel() 方法提供了 loc 参数来设置 x 轴显示的位置,可以设置为: 'left', 'right', 和 'center', 默认值为 'center'。
  • ylabel() 方法提供了 loc 参数来设置 y 轴显示的位置,可以设置为: 'bottom', 'top', 和 'center', 默认值为 'center'。
python 复制代码
# 实例 6
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
 
# fname 为 你下载的字体库路径,注意 SourceHanSansSC-Bold.otf 字体的路径,size 参数设置字体大小
zhfont1 = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Bold.otf", size=18)
font1 = {'color':'blue','size':20}
font2 = {'color':'darkred','size':15}
x = np.arange(1,11)
y =  2  * x +  5

# fontdict 可以使用 css 来设置字体样式
plt.title("测试", fontproperties=zhfont1, fontdict = font1, loc="left")
 
# fontproperties 设置中文显示,fontsize 设置字体大小
plt.xlabel("x 轴", fontproperties=zhfont1, loc="left")
plt.ylabel("y 轴", fontproperties=zhfont1, loc="top")
plt.plot(x,y)
plt.show()

ax.set_title() 和 plt.title(),以及 df,plot(title='') 区别

plt.XX 之类的是函数式绘图,通过将数据参数传入 plt 类的静态方法中并调用方法,从而绘图。fig,ax=plt.subplots() 是对象式编程,这里 plt.subplots() 是返回一个元组,包含了 figure 对象(控制总体图形大小)和 axes 对象(控制绘图,坐标之类的)。进行对象式绘图,首先是要通过 plt.subplots() 将 figure 类和 axes 类实例化也就是代码中的 fig, ax,然后通过 fig 调整整体图片大小,通过 ax 绘制图形,设置坐标,函数式绘图最大的好处就是直观,但如果绘制稍微复杂的图像,或者过子图操作,就不如对象式绘图了,ax.set_title() 是给 ax 这个子图设置标题,当子图存在多个的时候,可以通过 ax 设置不同的标题,如果仅仅是调用 plt.title() 给多个子图上标题,就比较麻烦了。

ax.set_title()

python 复制代码
import  matplotlib .pyplot as plt
x=[1,2,3,4,5]
y=[3,6,7,9,2]
# 实例化两个子图(1,2)表示1行2列
fig,ax=plt.subplots(1,2)
ax[0].plot(x,y,label='trend')
ax[1].plot(x,y,color='cyan')
ax[0].set_title('title 1')
ax[1].set_title('title 2')

plt.title()

python 复制代码
import  matplotlib .pyplot as plt
x=[1,2,3,4,5]
y=[3,6,7,9,2]
# fig,ax=plt.subplots(1,2)
plt.figure(1)
plt.subplot(121)# 12表示子图分布:一行2列;最后一个1表示第1个子图,从左往右
plt.plot(x,y,label='trend')
plt.title('title 1',fontsize=12,color='r') #r: red
plt.subplot(122)#第二个子图
plt.plot(x,y,c='cyan')
plt.title('title 2')

df,plot(title='')

pandas 的 df 自带的 plot,自带设置图片大小,图片命名等。

python 复制代码
#按照neighbourhood和room_type分组,计算每个值的个数和price的均值
neigh_roomtype=listings.groupby(['neighbourhood','room_type']).agg({'id':'size','price':'mean'})
#将ID改为number
neigh_roomtype=neigh_roomtype.rename(columns={'id':'number'})

#先对number计算统计可视化等
number_n_r=neigh_roomtype.unstack()['number']
number_n_r.plot(figsize=(12,5),title='图1:不同房屋类型在不同地区的数量')

后记

今天学习的是Python Matplotlib 轴标签和标题学会了吗。 今天学习内容总结一下:

  1. Matplotlib 轴标签和标题
  2. 标题
  3. 图形中文显示
  4. 标题与标签的定位
  5. ax.set_title() 和 plt.title(),以及 df,plot(title='') 区别
相关推荐
gpfyyds6662 小时前
Python代码练习
开发语言·python
r i c k2 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦3 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
aiguangyuan3 小时前
使用LSTM进行情感分类:原理与实现剖析
人工智能·python·nlp
shandianchengzi3 小时前
【小白向】错位排列|图文解释公考常见题目错位排列的递推式Dn=(n-1)(Dn-2+Dn-1)推导方式
笔记·算法·公考·递推·排列·考公
小小张说故事4 小时前
BeautifulSoup:Python网页解析的优雅利器
后端·爬虫·python
luoluoal4 小时前
基于python的医疗领域用户问答的意图识别算法研究(源码+文档)
python
Shi_haoliu4 小时前
python安装操作流程-FastAPI + PostgreSQL简单流程
python·postgresql·fastapi
浅念-4 小时前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
ZH15455891314 小时前
Flutter for OpenHarmony Python学习助手实战:API接口开发的实现
python·学习·flutter