介绍matplotlib.pyplot模块

最简单的单图像生成
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,1,100)  #从-1到1生成100个点  
y = 2*x + 1
plt.plot(x,y)
plt.show()


多窗口与单窗口绘制多幅图像
  • 多窗口
import matplotlib.pyplot as plt 
import numpy as np

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

# figure 1
plt.figure()
plt.plot(x,y1)

# figure 2
plt.figure() #可选参数figsize,决定每个figure的大小
# plt.figure(figsize=(2,2))  ,分别代表长为2宽为2
plt.plot(x,y2)

plt.show()

  • 单窗口
import matplotlib.pyplot as plt
import numpy as np

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


#其中pyplot.plot()函数又几个可选参数,color是颜色,linewidth是线宽,linestyle是线的类型
plt.plot(x,y1,color = 'red',linewidth = 2,linestyle = '--')
plt.plot(x,y2,color = 'blue',linewidth = 5,linestyle = '-')
plt.show()

设置坐标轴
  • xy范围
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3,100)
y = 2*x + 1

plt.xlim((-2,2))  #坐标轴范围改为了(-2,2)

plt.plot(x,y,color = 'red',linewidth = 2)
plt.show()

  • xy轴描述
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3,100)
y = 2*x + 1

plt.xlabel('This is x',fontsize = 24)
plt.ylabel('This is y',fontsize = 24)  #可选变量可以改变描述的大小
plt.title('This is a title',fontsize = 24)

plt.plot(x,y,color = 'red',linewidth = 2)
plt.show()

  • xy步进值
import matplotlib.pyplot as plt
import numpy as np 

x = np.linspace(-3,3,100)
y = 2*x 
  
#这个可以修改函数的标签,通过设置点的多少来控制步进值  
new_xticks = np.linspace(-2,2,9)
new_yticks = np.linspace(-4,4,11)
plt.xticks(new_xticks)
plt.yticks(new_yticks)  


#这是直接限制坐标轴的长度
plt.xlim((-2,2))
plt.ylim((-4,4))  

plt.plot(x,y)
plt.show()

  • 替换xy数字,与x轴y轴描述不一样
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-2,2,20)
y = 2*x

new_yticks = np.linspace(-4,4,4)
plt.yticks(new_yticks,['a','b','c','d']) #一个变量是x轴原来或者想设置的值,后一个变量是需要替换的样子

plt.plot(x,y)
plt.show()


  • 坐标轴位置设置
    开始之前介绍几个函数:

(1). ax = plt.gca()   #get current axis, 获取当前坐标轴
(2). ax.spines[‘right’].set_color(None)   #spines在英语中是脊梁,脊柱的意思,很形象,可以通过’bottom’,‘top’,‘left’,'right’四个参数来调用
#这句话是让四方框的右上部分消失
(3). ax.xaxis.set_ticks_position(‘bottom’)
  ax.yaxis.set_ticks_position(‘left’) #这两句话是控制x,y轴刻度的位置,参数可以是上面的四个字符
(4). ax.spines[‘bottom’].set_position((‘data’,0))
  ax.spines[‘left’].set_position((‘data’,0))    #data是指按照坐标轴刻度移动。x坐标就移动到y轴0的位置,y坐标轴的移动同理

例如二次函数的绘制

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-2,2,100)
y = x**2

new_xticks = np.linspace(-2,2,9)
plt.xticks(new_xticks)
plt.xlabel('X Value',fontsize = 18)
plt.ylabel('X^2 Value',fontsize = 18)

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.plot(x,y,linewidth = 2)
plt.show()

图例的简单生成
  • 方法1:使用变量存储函数,注意逗号的应用
import matplotlib.pyplot as plt
import  numpy as np
x  = np.linspace(-2,2,100)
y1 = 2*x + 1
y2 = x**2
ax = plt.gca()
ax.spines['right'].set_color(None)
ax.spines['top'].set_color(None)
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data',0))
p1, = plt.plot(x,y1)
p2, = plt.plot(x,y2)
plt.legend(handles = [p1,p2],labels = ['2x+1','x^2'],loc = 'best') 
plt.show()

其中legend的loc参数可以有这么几个选择:
‘best’,‘upper right’,‘upper left’,‘lower right’,‘lower left’,‘right’,‘center left’,‘center right’,‘lower center’,‘upper center’

  • 方法2: 使用plot时自带label属性,然后再用legend改变位置
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-2,2,100)
y1 = 2*x + 1
y2 = x**2
ax = plt.gca()
ax.spines['right'].set_color(None)
ax.spines['top'].set_color(None)
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data',0))
plt.plot(x,y1,label = '2x+1')
plt.plot(x,y2,label = 'x^2')
plt.legend(loc = 'best')
plt.show()

简单的注释
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,100)
y1 = 2*x + 1

ax = plt.gca()
ax.spines['right'].set_color(None)
ax.spines['top'].set_color(None)
ax.spines['left'].set_position(('data',0))
ax.spines['bottom'].set_position(('data',0))
plt.plot(x,y1,color = 'red')

x0 = 0.5
y0 = 2*x0 +1
plt.scatter(x0,y0, s = 50,color = 'k')
plt.plot([x0,x0],[y0,0],'k--')
plt.annotate('zhushi',xy = (x0,y0),xytext = (1.5,0.5),color = 'k',arrowprops = dict(width = 2, color = 'purple',shrink = 0.05))


'''
    xy=(横坐标,纵坐标)  箭头尖端
    xytext=(横坐标,纵坐标) 文字的坐标,指的是最左边的坐标
    arrowprops= dict(
        color= '颜色',
        shrink = '数字' <1  收缩箭头
        width = 2,
    )
'''


plt.show()

散点图
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = np.arange(5)
plt.scatter(x,y,color = 'red',s = 30,alpha= 0.8)
#alpha 是不透明度,0~1的范围

plt.show()

直方图
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = x**2 + 10
plt.bar(x,y,facecolor = 'purple'or '#9999ff',edgecolor = 'white')
for x,y in zip(x,y):
    plt.text(x,y,'{}'.format(y)) 
plt.show()

等高线图
import matplotlib.pyplot as plt
import numpy as np

def f(x,y):
    return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)
    
x = np.linspace(-3, 3, 256)
y = np.linspace(-3, 3, 256)
X, Y = np.meshgrid(x,y)    #类似于告诉你底边就是x,y。高度是基于xy面的

plt.contourf(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot) 
# 这是等高线的填充设置 alpha 是透明度 cmap可以理解为颜色

C = plt.contour(X,Y,f(X,Y),8,colors='black')
# 这是等高线的线设置

plt.clabel(C,inline=True,fontsize=10) 
# inline表示数字是在线里面还是外面
# 数字8 代表是等高线图分成几部分,0是两部分,所以8是有10部分10个圈

plt.xticks(())
plt.yticks(()) 
# 这两个是把标签都覆盖了,就没有数字了

plt.show()

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

live_for_myself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值