Matplotlib学习笔记(二)

目录

一、Matplotlib设置坐标轴

    1)、设定当前显示的X轴区间和Y轴区间,上代码了。

     2)、修改显示X轴的脚标[ticks]

     3)、修改显示Y轴的脚标[ticks]

二、Matplotlib设置 Legend小图例

三、设置annotate注释和task注释


 


一、Matplotlib设置坐标轴

       今天继续学习matplotlib,学习笔记一中已经算是一个小的入门,可以展示出简单的图像,对于图像中X轴和Y轴没有做过多的修饰,如何修改X轴和Y轴呢?

    1)、设定当前显示的X轴区间和Y轴区间,上代码了。

# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-4,4,30)
y1=x*2+1
y2 = x**2

plt.figure(num=3)
plt.plot(x,y1)
plt.plot(x,y2,color='red',linewidth=1,linestyle='--')

plt.xlim((-2,1))
plt.ylim((-1,2))

plt.show()

         图像展示如下:

代码解读:

           加入了plt.xlim和plt.ylim,通过上图中标红的框框里的值,会发现和我们上面xlim和ylim里的范围是一样的。

           xlim和ylim的作用是展示的X轴和Y轴的范围内的图像,相当于是截取了展示了整体图像设定的一部分,通过拖动还是可以看其它X轴和Y轴的图像。

     2)、修改显示X轴的脚标[ticks]

        上代码:

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-4,4,30)
y1=x*2+1
y2 = x**2

plt.figure(num=3)
plt.plot(x,y1)
plt.plot(x,y2,color='red',linewidth=1,linestyle='--')

plt.xlim((-2,1))
plt.ylim((-1,2))

new_ticks=np.linspace(-2,2,5)
plt.xticks(new_ticks)
plt.show()

        图像展示如下:

       

        代码解读:

                     在上面的代码的基础上我们又加入了一个new_ticks,ticks在英文中的解释是“标记,记号”,所以我们要对X轴上的标记重新规定一下。

                  1.new_ticks=np.linspace(-2,2,5)  #生成-2到2之间的5个数。

                  2.plt.xticks(new_ticks)                 #设定X轴新的ticks为我们上面新生成的ticks值

     3)、修改显示Y轴的脚标[ticks]

              对于Y轴如果我们不想显示数字,想以文字描述来对应不同的数值,那么如何修改呢?其实也是对ticks的修改,继续上代码了:

            

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-4,4,30)
y1=x*2+1
y2 = x**2

plt.figure(num=3)
plt.plot(x,y1)
plt.plot(x,y2,color='red',linewidth=1,linestyle='--')

plt.xlim((-2,1))
plt.ylim((-1,2))

new_ticks=np.linspace(-2,2,5)
plt.xticks(new_ticks)
plt.yticks([-1,-0.5,0,1,2],
            ['very bad','bad','nomal','good','very good'])
plt.show()

         图像展示:

                  

        代码解读:

                      1.这里我们只是加入了 plt.yticks([-1,-0.5,0,1,2], ['very bad','bad','nomal','good','very good'])

                          规定Y轴中数字对应 显示的文本是什么,这里要注意的是不能打中文哟。会乱码的。

                      2.对于文本的显示可以对文本的规格进行设定,自己可以去试着修改运行一下看看。

                        plt.yticks([-1,-0.5,0,1,2],[r'$very\ \alpha$',r'$bad$',r'$nomal$',r'$good$',r'$very\ good$'])

                     3.X轴和Y轴加入lable可以通过以下方法:

                          plt.xlabel('I am X')

                          plt.ylabel('I am Y')

                        

4)、移动X轴和Y轴

      直接上代码喽:

         

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-4,4,30)
y1=x*2+1
y2 = x**2

plt.figure(num=3)
plt.plot(x,y1)
plt.plot(x,y2,color='red',linewidth=1,linestyle='--')

plt.xlim((-2,1))
plt.ylim((-1,2))

new_ticks=np.linspace(-2,2,5)
plt.xticks(new_ticks)
plt.yticks([-1,-0.5,0,1,2],
            [r'$very\ \alpha$',r'$bad$',r'$nomal$',r'$good$',r'$very\ good$'])
plt.xlabel('I am X')
plt.ylabel('I am Y')

#gca = get current axis
ax = plt.gca()
ax.spines['bottom'].set_color('none')
ax.spines['right'].set_color('none')

plt.show()

图像展示:

代码解读:

            1.通过图像我们可以看出来图像的底部和右边部分的轴线没有了,用英文来解释是设置图像中底部和右边的spines没有颜色。

            2.注:这里要注意ax.spines后面跟的是[] 而不是() , 我在开始打的时候设置的是小括号以为是调用的一个方法,所以运行报错。

       好啦。继续!!!!

上代码:

      

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-4,4,30)
y1=x*2+1
y2 = x**2

plt.figure(num=3)
plt.plot(x,y1)
plt.plot(x,y2,color='red',linewidth=1,linestyle='--')

plt.xlim((-2,1))
plt.ylim((-1,2))

new_ticks=np.linspace(-2,2,5)
plt.xticks(new_ticks)
plt.yticks([-1,-0.5,0,1,2],
            [r'$very\ \alpha$',r'$bad$',r'$nomal$',r'$good$',r'$very\ good$'])
plt.xlabel('I am X')
plt.ylabel('I am Y')

#gca = get current axis
ax = plt.gca()
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

plt.show()

 

   图像展示:

     代码解读:

                1.通过代码我们可以知道在上面的基础上加入了四句:

                 ax.xaxis.set_ticks_position('bottom')  #设置X轴为bottom 

                 ax.yaxis.set_ticks_position('left')        #设置Y轴为left

                ax.spines['bottom'].set_position(('data',0))  #设置底的也就是X轴的数据起点

                ax.spines['left'].set_position(('data',0))        #设置left 的也就是Y轴的数据起点

二、Matplotlib设置 Legend小图例

       

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-4,4,30)
y1=x*2+1
y2 = x**2

plt.figure(num=3)
plt.plot(x,y1,label='One')
plt.plot(x,y2,color='red',linewidth=1,linestyle='--',label='Two')

plt.xlim((-2,1))
plt.ylim((-1,2))

new_ticks=np.linspace(-2,2,5)
plt.xticks(new_ticks)
plt.yticks([-1,-0.5,0,1,2],
            [r'$very\ \alpha$',r'$bad$',r'$nomal$',r'$good$',r'$very\ good$'])
plt.xlabel('I am X')
plt.ylabel('I am Y')

#gca = get current axis
ax = plt.gca()
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

plt.legend()

plt.show()

     图像展示如下:

代码解读:

            1.修改了两个地方:

        第一个:plt.plot(x,y1,label='One')

                                           plt.plot(x,y2,label='Two')

                            第二个:

                                          plt.legend()

                  第一个地方是要给每一条线起个名字,用于在图例是显示,第二个就是加入图例了。

   2.注:当然对于legend会有一些其它的属性,下面的属性加入后可以自己去运行一下了

      第一部分:

      l1,=plt.plot(x,y1,label='One')

                      l2,=plt.plot(x,y2,color='red',linewidth=1,linestyle='--',label='Two')

                    第二部分:

                  plt.legend(loc='best',handles=[l1,l2],labels=['new_One','new_Two'])

     这里面要注意的是在plt.plot()前面的变量名要加一个逗号,loc='best'的含义是把图例放在图像的最好的位置上面。

 

三、设置annotate注释和task注释

        1.annotate注释设置属性非常多,代码如下:

             

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(-3,3,50)
y1 = 2*x+1
y2 = x**2
plt.figure(num=1, figsize=(8, 5),)
plt.xlabel('I am X')
plt.ylabel('I am Y')
l1,=plt.plot(x, y1,)
l2,=plt.plot(x,y2,linestyle='--')
plt.legend(handles=[l1,l2,],labels=['One','Two'],loc='best')

ax=plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))


x0=-2
y0=2*x0+1
plt.scatter(x0,y0,c='b')

plt.plot([x0,x0],[y0,0],linestyle='--',c='k')

plt.annotate(r'$2*x+1=%s$'%y0,xy=(x0,y0),xycoords='data',xytext=(30,-30),textcoords='offset points',
             fontsize=12,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
plt.show()

         展示如下:

代码解读:

             1.注:plot和scatter方法,一个是线,一个是点,可以通过一些小的例子演示

               所以我们要为线上一个点加注释其实是要先在线上画一个点,如下代码:

               plt.scatter(x0,y0,c='b')

               c='b':表示设置颜色为蓝色c=color  b=blue

            2.画完点后要再画一条虚线

                plt.plot([x0,x0],[y0,0],linestyle='--',c='k')

            3.最关键的注释annotate

              plt.annotate(r'$2*x+1=%s$'%y0,xy=(x0,y0),xycoords='data',xytext=(30,-30),textcoords='offset points',fontsize=12,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))

三、设置tick透明度

      直接上代码了

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y = 0.1*x

plt.figure()
# 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序
plt.plot(x, y, linewidth=10, zorder=1)
plt.ylim(-2, 2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))

for label in ax.get_xticklabels()+ax.get_yticklabels():
    label.set_fontsize(12)
    label.set_bbox(dict(facecolor='white',edgecolor='none',alpha=0.7,zorder=2))

plt.show()

图像展示:

代码解读:

     set_fontsize:重新设置字体

     facecolor:设置字后面的前景色

     edgecolor:设置是否有边框

     alpha:设置透明度

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值