当前位置:网站首页>(subplots用法)matplotlib如何绘制多个子图(轴域)
(subplots用法)matplotlib如何绘制多个子图(轴域)
2022-07-03 05:07:00 【音程】
import matplotlib.pyplot as plt
#准备数据。
x=np.arange(3)
y1=np.random.rand((3))
y2=np.random.rand((3))
粗略
#得到绘图区以及子图。
fig,(ax1,ax2)=plt.subplots(1,2,figsize=(10,4))#指定绘图区为(10,4),并且一行两列,默认两列各占一半,即(5,4)(5,4)
ax1.plot(x,y1)
ax2.plot(x,y2)
精细
1.刻度
子图的刻度和plt的那个刻度用法不一样。
后者是:
plt.xticks(x,label)#就可以在x的位置处填写label值。
但是子图的用法是:
ax1.set_xticks(x)#在x的位置处标记数字。
ax1.set_xticklabels(label)#在x处标记标签。
效果如下:
#得到绘图区以及子图。
fig,(ax1,ax2)=plt.subplots(1,2,figsize=(10,4))#指定绘图区为(10,4),并且一行两列,默认两列各占一半,即(5,4)(5,4)
ax1.plot(x,y1)
ax2.plot(x,y2)
ax1.set_xticks(x)#在x的位置处标记数字。
# ax1.set_xticklabels(label)#在x处标记标签。
#得到绘图区以及子图。
fig,(ax1,ax2)=plt.subplots(1,2,figsize=(10,4))#指定绘图区为(10,4),并且一行两列,默认两列各占一半,即(5,4)(5,4)
ax1.plot(x,y1)
ax2.plot(x,y2)
ax1.set_xticks(x)#在x的位置处标记数字。
label=["a","b","c"]
ax1.set_xticklabels(label)#在x处标记标签。
2.大小
现在我们可以看到,我们上面设置整个绘图区是(10,4),然后默认就是各自一半,那么如何精细控制每一个子图的大小呢?
#得到绘图区以及子图。
fig,(ax1,ax2)=plt.subplots(1,2,figsize=(10,4))#指定绘图区为(10,4),并且一行两列,默认两列各占一半,即(5,4)(5,4)
ax1.plot(x,y1)
ax2.plot(x,y2)
ax1.set_position((0.1,0.1,0.8,0.8))#将ax1的左下角放在绘图区的0.1,0.1位置处(0.1指代的是绘图区的10%的意思)。ax1的左下角放置好了之后,宽为80%,高为80%。注意,此时ax1的右上角的位置是0.9,0.9。
ax2.set_position((0.9,0.9,0.1,0.1))#所以这里从0.9开始,否则会重叠。然后只占比0.1,刚好用完绘图区。
可以看到,一个大,一个小。
绝招
其实如果你有时间的话,子图(轴域)这个类官方文档中有写,axes其他属性可以见https://matplotlib.org/stable/api/axes_api.html?highlight=axes#module-matplotlib.axes。
总之,要有类的思想,axes(子图)是在figure(画布)中的。那为什么一到画图就很难学了呢?我的感觉是官方为了方便大家,构建子图,我们根本不是去构造axes类,而是调用五花八门的方法,例如上面的
subplots()
这样子,很容易上手,方便新手,但是却大大损害了进阶人士的理解,哎。
按照类的思想,我们应该如下:
先创建绘图区对象figure,然后将这个对象以及子图位置传入axes类的构造函数中,得到子图。然后绘制。
边栏推荐
- 1087 all roads lead to Rome (30 points)
- Promise
- Ueditor, FCKeditor, kindeditor editor vulnerability
- Notes | numpy-09 Broadcast
- Unity tool Luban learning notes 1
- JS dynamic table creation
- Gbase8s unique index and non unique index
- Literature reading_ Research on the usefulness identification of tourism online comments based on semantic fusion of multimodal data (Chinese Literature)
- Flutter monitors volume to realize waveform visualization of audio
- Actual combat 8051 drives 8-bit nixie tube
猜你喜欢
[basic grammar] Snake game written in C language
[research materials] 2021 China's game industry brand report - Download attached
Unity tool Luban learning notes 1
[basic grammar] C language uses for loop to print Pentagram
JS dynamic table creation
On typescript and grammar
JQ style, element operation, effect, filtering method and transformation, event object
Keepalived热备与HAProxy
[set theory] relation properties (transitivity | transitivity examples | transitivity related theorems)
Kept hot standby and haproxy
随机推荐
Wechat applet distance and map
Class loading mechanism (detailed explanation of the whole process)
1087 all roads lead to Rome (30 points)
Promise
Use posture of sudo right raising vulnerability in actual combat (cve-2021-3156)
study hard and make progress every day
Current market situation and development prospect forecast of the global fire boots industry in 2022
Blog building tool recommendation (text book delivery)
1103 integer factorization (30 points)
JS dynamic table creation
Retirement plan fails, 64 year old programmer starts work again
The 19th Zhejiang I. barbecue
Flutter monitors volume to realize waveform visualization of audio
1114 family property (25 points)
appium1.22. Appium inspector after X version needs to be installed separately
Sprintf formatter abnormal exit problem
"Hands on deep learning" pytorch edition Chapter II exercise
Thesis reading_ Chinese NLP_ ELECTRA
[basic grammar] C language uses for loop to print Pentagram
Huawei personally ended up developing 5g RF chips, breaking the monopoly of Japan and the United States