文章目录
    
    
    
    参考:
    
     莫凡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 版权协议,转载请附上原文出处链接和本声明。