matlibplot中plot使用常用参数(莫凡python学习笔记)

  • Post author:
  • Post category:python




参考:

莫凡Python



引入matlibplot库

import matplotlib.pyplot as plt
import numpy as np



plt.figure()


figure(num=None, figsize=None)

  • num:编号或名字
  • figsize:图片大小(单位英寸)



创建数据

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



plt.plot()

l1, = plt.plot(x, y1, color='r',
                linewidth=1.0,
                linestyle='--',
                label='down')
l2, = plt.plot(x, y2,label='up')

前面加不加都可以,加上是个默认参数留在图例的时候用

参数介绍:

  • x,y:两个等长的序列表示坐标然后连起来
  • color:颜色
  • linewideh:线宽
  • linestyle:线型
  • label:默认图例



坐标轴限制limit

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

限制左右上下范围



坐标轴名字label

plt.xlabel('i am x')
plt.ylabel('i am y')



坐标轴名字自由选择ticks

这是我认为比matlab更好用的一个地方:

plt.xticks(np.linspace(-1, 3, 5))
plt.yticks([-1, 2, 4, 8, 11], ['E', 'D', 'C', 'B', 'A'])

两种主要的方法

  • 直接自由分割几个点做标注
  • 用两个等长的list作等位置的替换



边框plt.gca()&&选择(0,0)为坐标轴原点

gca : get current axis

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))

设置右边和上面边框格式为空

定位左边和下面边框为选定的边框

设置左边和下边的坐标轴为(0,0),选定数据为‘data’



plt.legend()图例

简单写法为:

plt.legend(labels=[],loc='best')

理解为上面画图参数为构造函数的默认参数,这个是构造函数,传入的参数可覆盖过去的图例信息

位置信息为loc,一般选用best

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

第一个参数为选择性显示



确定点到下方x轴的垂直线

x0 = 1
y0 = 4 * x0 + 1
plt.scatter(x0, y0, s=50, color='g')
plt.plot([x0, x0], [0, y0], 'k--', lw=2)

确认xy点之后画出点,之后画直线,[x0, x0], [0, y0],相当于是作轴的垂直线,lw是线宽的简写



某点标注plt.annotate()

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

参数先输入要填写的东西,之后xy是坐标,xycoords是说基于数据的值来选位置

xytext表示显示的点的偏移值(肯定不能选择在图像上面写东西除非确实要这样做)

最后是对箭头的表述



text文本添加plt.text()

plt.text(-1, 3, r'$it\ is\ annotation\ !$',
        # fontproperties = 'SimHei',
        fontdict={'size': 16, 'color': 'r'})

前面两个是坐标位置,最后fondict是表示字体说明



最终代码

import matplotlib.pyplot as plt
import numpy as np
plt.figure(num=1,figsize=(8,5),)
x = np.linspace(-3, 3, 500)
y1 = x ** 2 + 2 + x
y2 = 4 * x + 1
l1, = plt.plot(x, y1, color='r',
                linewidth=1.0,
                linestyle='--',
                label='down')
l2, = plt.plot(x, y2,label='up')
plt.xlim((-1, 3))
plt.ylim((-2, 15))
plt.xlabel('i am x')
plt.ylabel('i am y')

plt.xticks(np.linspace(-1, 3, 5))
plt.yticks([-1, 2, 4, 8, 11], ['E', 'D', 'C', 'B', 'A'])

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))

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


x0 = 1
y0 = 4 * x0 + 1
plt.scatter(x0, y0, s=50, color='g')
plt.plot([x0, x0], [0, y0], 'k--', lw=2)

plt.annotate('2x+1=%s' % y0, xy=(x0, y0),
            xycoords='data',
            xytext=(30,-30),
            textcoords='offset points',
            fontsize=16,
            arrowprops=dict(arrowstyle='->',
                            connectionstyle="arc3,rad=.2"))
plt.text(-1, 3, r'$it\ is\ annotation\ !$',
        # fontproperties = 'SimHei',
        fontdict={'size': 16, 'color': 'r'})



效果图

在这里插入图片描述



版权声明:本文为qq_43409560原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。