Notes_matplotlib_子图和文字

子图

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
plt.style.use('seaborn-white')#注意是-而不是_
%matplotlib inline
axi=plt.axes()
axii=plt.axes([0.65,0.65,0.2,0.2])
#图形坐标系统的四个值[左下角的x,左下角的y,宽度,高度]
#取值范围为0~1.代表百分比。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zufLetaJ-1582545647160)(output_2_0.png)]

#面向对象:使用add_axes(不是axis)
fig=plt.figure()
ax1=fig.add_axes([0.1,0.5,0.8,0.4],xticklabels=[],ylim=[-1.2,1.2])
#xticklabels设为了空列表,不显示x轴刻度。
#xticklabels与xlim是有区别的。
ax2=fig.add_axes([0.1,0.1,0.8,0.4],ylim=(-1.2,1.2))
x=np.linspace(0,8,100)
ax1.plot(x,np.sin(x))
ax2.plot(x,np.cos(x))
[<matplotlib.lines.Line2D at 0x2568d61abb0>]

在这里插入图片描述

for i in range(1,7):
    plt.subplot(2,3,i)
    #plt.subplot(2,3,1)也可写成plt.subplot(231).
    #另一种调用方式是用plt.subplot(ax),即传递一个Axes对象。这样可以直接把图的内容画出来
    plt.text(0.5,0.5,str((2,3,i)),fontsize=18,ha='center')
plt.subplots_adjust(wspace=1,hspace=0.2)
#注意这里的range(1,7)是因为plt.subplot的子图索引是从一开始(与MATLAB同),面向对象同。
#plt.subplots索引是从0开始,
#这个查docstring,很简单但不好记
#注意wspace与hspace就好。宽度间隔和高度间隔。
#是平均子图宽度与高度的百分比

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6vyDAeq1-1582545647161)(output_4_0.png)]

fig=plt.figure()
fig.subplots_adjust(wspace=0.3,hspace=0.2)
for i in range(1,7):
    ax=fig.add_subplot(2,3,i)
    #注意是subplot不是复数
    #返回一个ax对象。
    ax.text(0.5,0.5,str((2,3,i)),fontsize=18,ha='center')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E63l9K9w-1582545647162)(output_5_0.png)]

#一次性创建多个子图:
fig,ax=plt.subplots(2,3,sharex='col',sharey='row')#也可都设为True。
#返回包含子图,即AxesSubplot对象的numpy数组
ax
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000002568D9C43D0>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000002568D9EEC40>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000002568DA35280>],
       [<matplotlib.axes._subplots.AxesSubplot object at 0x000002568DA5D910>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000002568DA87FD0>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000002568DACA340>]],
      dtype=object)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7QZooMo4-1582545647163)(output_6_1.png)]

for i in range(2):
    for j in range(3):
        ax[i,j].text(0.5,0.5,str((2,3,i)),fontsize=18,ha='center')
fig
#返回值(数组)的用法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ZUazPvy-1582545647165)(output_7_0.png)]

#一个接口,可以创建不规则的子图:
grid=plt.GridSpec(2,3,wspace=0.3,hspace=0.2)#参数很简单,返回一个对象可使用。
plt.subplot(grid[0,0],projection='polar')#也可以用'polar=True'
plt.subplot(grid[0,1:],projection='aitoff')
plt.subplot(grid[1,:2],projection='hammer')
#projection为子图类型。
#返回一个axes对象。
#子图如果在其他子图上,会将原来的图删除。
plt.text(0.5,0.5,'dangdang',ha='center')
plt.subplot(grid[1,2])
#索引与Python保持一致。
plt.text(0.5,0.5,'hahah',ha='center')
#以上可以看出来:plt接口与面相对象的不同。
#plt只能能对当前进行修改,面向对象可以随时对每个对象修改。
Text(0.5, 0.5, 'hahah')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P15c65Fr-1582545647166)(output_8_1.png)]

fig3=plt.figure(num='FirstEye',#figure代号,可以是数或str
                figsize=(3,3),#fig 的大小,单位inch
                dpi=400,#像素密度
                facecolor='g',#颜色
                edgecolor='y',
                frameon=True,#外边框
                clear=True)#如有已有该代号的figure,将其清除。
plt.plot([2,3,4,5,2,4,3,5])
plt.close#关闭该fig 有'all'关闭所有,或者代号,关闭某一个。
#使用fig有方法:
#add_axes()
#add_artist()添加艺术家图例对象。使用matplotlib.legend中的Legend类可创建。
#一般来说,figure和axes都可添加artist。但是效果不一定相同。
#add_gridspec()和plt.GridSpec用法相同
#以get_开头的获取figure信息的方法
#以set_开头的设置figure方法。
<function matplotlib.pyplot.close(fig=None)>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8xQlUIdt-1582545647168)(output_9_1.png)]

文字

x=np.linspace(0,10,1000)
plt.plot(x,np.sin(x),color='m')
plt.text(4,0,'good curve',#所填的为坐标
         fontsize=10,
         color='blue',
         ha='right',#text关于坐标点的对齐方式,'left'(默认,左对齐),'right','center'
         fontfamily='monospace')#fontfamily即字体。
#kwagrs包括mpl.text.Text的参数
Text(4, 0, 'good curve')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O34y3XaP-1582545647169)(output_11_1.png)]

import matplotlib as mpl
fig5=plt.figure(facecolor='lightgray')
ax=plt.axes()
fig5.add_axes(ax)
ax.axis([0,10,0,10])
ax.text(0.5,0.5,'.Data(0.5,0.5)',transform=ax.transData)#即坐标以轴刻度为准
ax.text(0.5,0.5,'.Axes(0.5,0.5)',transform=ax.transAxes)#坐标以轴百分比为准
ax.text(0.5,0.7,'.Figure(0.5,0.7)',transform=fig5.transFigure)#坐标以figure的尺寸百分比为准。
Text(0.5, 0.7, '.Figure(0.5,0.7)')

在这里插入图片描述

ax.annotate('lalaal',#注释text
            xy=(4,2),#被注释的点
            xytext=(1,4),#text的位置,这里可以有mpl.text.Text 的kwargs
            bbox=dict(boxstyle='round',alpha=0.5),#mpl.text.Text的属性值。也需要用dict
            xycoords='data',#对齐的依据,和transform挺像,但是需要看dostring。
            arrowprops=dict(arrowstyle='-['))
            #箭头,要用字典给出,键值对。。。很多很难受。
            #箭头会被画在xy与xytext之间。
fig5

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值