当前位置:   article > 正文

Matplotlib基础学习笔记_plt.scatter没有图框

plt.scatter没有图框

基本用法

  1. x = np.linspace(-1,1,50) #linspace主要用来创建等差数列,返回的是[start,stop]之间的均匀分布,50是生成样本的数据量
  2. y = 2*x+1
  3. plt.plot(x,y)
  4. plt.show()

输出图像

figure图像

  1. x = np.linspace(-1,1,50)
  2. y1 = 2*x+1
  3. y2 = x**2
  4. #按照顺序输出不同的图
  5. plt.figure()
  6. plt.plot(x,y1)
  7. plt.figure(figsize=(8,5)) #用figsize来设置图标的长宽
  8. plt.plot(x,y2)
  9. plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--') #linewidth设置线的宽度,linestyle设置线的样式,pycharm中没有自动补齐
  10. plt.show()

输出图像

设置坐标轴1

  1. x = np.linspace(-1,1,50)
  2. y1 = 2*x+1
  3. y2 = x**2
  4. plt.figure()
  5. plt.plot(x,y2)
  6. plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
  7. #设置坐标轴的坐标取值范围
  8. plt.xlim((-1,2))
  9. plt.ylim((-2,3))
  10. #设置x,y坐标轴的名称
  11. plt.xlabel('I am X')
  12. plt.ylabel('I am Y')
  13. #设置x,y坐标轴坐标单位的小坐标名称
  14. new_ticks = np.linspace(-1,2,5)
  15. print(new_ticks)
  16. plt.xticks(new_ticks)
  17. plt.yticks([-2,-1.8,-1,1.22,3],
  18. ['really bad','bad','normal','good','really good'])#数字和下面文字介绍一致
  19. plt.show()

输出图像

设置坐标轴2

  1. x = np.linspace(-1,1,50)
  2. y1 = 2*x+1
  3. y2 = x**2
  4. plt.figure()
  5. plt.plot(x,y2)
  6. plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
  7. plt.xlim((-1,2))
  8. plt.ylim((-2,3))
  9. plt.xlabel('I am X')
  10. plt.ylabel('I am Y')
  11. new_ticks = np.linspace(-1,2,5)
  12. print(new_ticks)
  13. plt.xticks(new_ticks)
  14. plt.yticks([-2,-1.8,-1,1.22,3],
  15. ['really bad','bad','normal','good','really good'])
  16. #给显示出来的图像的坐标轴换个位置
  17. #gca = ‘get current axis' 要用到的函数
  18. ax = plt.gca()
  19. ax.spines['right'].set_color('none') #把图像右边的横线消除,spine翻译是脊梁
  20. ax.spines['top'].set_color('none') #同理把上边的横线消除
  21. ax.xaxis.set_ticks_position('bottom') #声明用最底端的轴代替x轴
  22. ax.yaxis.set_ticks_position('left') #声明用左边的轴代替y轴
  23. #开始挪动xy的位置
  24. ax.spines['bottom'].set_position(('data',-1)) #把x轴插入到y=-1的位置上
  25. ax.spines['left'].set_position(('data',0)) #把y轴插入到x=0的位置上
  26. plt.show()

输出图像

Legend图例

  1. x = np.linspace(-3,3,50)
  2. y1 = 2*x+1
  3. y2 = x**2
  4. plt.figure()
  5. plt.plot(x,y2,label='up')
  6. plt.plot(x,y1,color='red',linewidth=1,linestyle='--',label='down')
  7. #加上legend图例,就是解释每一条线是代表了什么
  8. plt.legend()#他是有很多属性的 handles、labels、loc
  9. plt.show()

输出图像

Annotation标注

  1. x = np.linspace(-3,3,50)
  2. y = 2*x+1
  3. plt.figure()
  4. plt.plot(x,y)
  5. ax = plt.gca()
  6. ax.spines['right'].set_color('none')
  7. ax.spines['top'].set_color('none')
  8. ax.xaxis.set_ticks_position('bottom')
  9. ax.spines['bottom'].set_position(('data',0))
  10. ax.yaxis.set_ticks_position('left')
  11. ax.spines['left'].set_position(('data',0))
  12. #在图中某一个点处添加标记annotation
  13. x0 = 1
  14. y0 = 2*x0+1
  15. plt.scatter(x0,y0)#scatter是散点图,这样输入参数的话,只在图中标注一个点
  16. plt.plot([x0,x0],[y0,0],'k--',lw=2.5)#这句代码的意思是让(x0,y0)和(x0,0)两点连成一条线在图中显示,k--的意思是线的颜色是black、线的样式是---虚线
  17. #显示标注的第一种方法
  18. plt.annotate('2x+1=3',xy=(x0,y0),xycoords='data',textcoords='offset points',xytext=(+30,-30))
  19. #显示标注的第二种方法
  20. plt.text(-3,3,'this is some text') #前面两个数字是x,y的坐标,我们要输出的文本就是从这个点开始输出,后面的字符串是要输出的字符
  21. plt.show()

输出图像

Scatter散点图

  1. #scatter散点图
  2. n = 1024
  3. x = np.random.normal(0,1,n)
  4. y = np.random.normal(0,1,n)
  5. T = np.arctan2(y,x) #设置颜色值 arctan2(x,y) means arctan(x/y)
  6. plt.scatter(x,y,s=7.5,c=T,alpha=0.5) #alpha是透明度 s是散点的大小 c是散点的颜色
  7. plt.xlim((-1.5,1.5))
  8. plt.ylim((-1.5,1.5))
  9. plt.show()

输出图像

Bar柱状图

  1. #Bar柱状图
  2. n = 12 #柱状图中柱子的数量
  3. x = np.arange(n)
  4. y1 = (1-x/float(n))*np.random.uniform(0.5,1.0,n)
  5. y2 = (1-x/float(n))*np.random.uniform(0.5,1.0,n)
  6. plt.bar(x,y1,facecolor='#9999ff',edgecolor='white') #facecolor设置前景色,edgecolor设置边框色
  7. plt.bar(x,-y2,facecolor='#ff9999',edgecolor='white')
  8. for x,y in zip(x,y1): #zip()作用是把x,y1打包到x,y中
  9. #ha:horizontal alignment
  10. #va:vertical alignment
  11. #text()中的(x+0.4,y+0.5)意思是这个text在图中的坐标点
  12. plt.text(x,y,'%.2f'%y,ha='center',va='bottom')
  13. plt.xlim(-.5,n)
  14. plt.ylim(-1.25,1.25)
  15. plt.show()

输出图像

3D数据

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. from mpl_toolkits.mplot3d import Axes3D
  4. #数据3d可视化
  5. fig = plt.figure() #定义一个三元坐标系的窗口
  6. ax = Axes3D(fig)
  7. X = np.arange(-4,4,0.25)
  8. Y = np.arange(-4,4,0.25)
  9. X,Y = np.meshgrid(X,Y) #meshgrid()生成网格点坐标矩阵,举个例子X轴可以取三个值1,2,3,y轴可以取两个值7,8,那么通过meshgrid生成六个点坐标,分别是(1,7)(2,7)等等
  10. R = np.sqrt(X**2+Y**2)
  11. Z=np.sin(R) #设置高度
  12. ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
  13. #rstride = row stride 表示行的跨度
  14. #cstride= col stride 表示列的跨度 具体展现在图中的黑色线条
  15. ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow') #zdir是表示从哪一个轴压下去 这个函数是等高线
  16. ax.set_zlim(-2,2)
  17. plt.show()

输出图像

Subplot在一个大图里面显示一个小图

  1. #在一个大图里面显示多个小图
  2. plt.figure()
  3. # plt.subplot(2,2,1) #把整个figure分成两行两列,1表示的是下面的操作是对第一张图的
  4. # plt.plot([0,1],[0,1])
  5. #
  6. # plt.subplot(2,2,2)
  7. # plt.plot([0,1],[0,2])
  8. #
  9. # plt.subplot(2,2,3)
  10. # plt.plot([0,1],[0,3])
  11. #
  12. # plt.subplot(2,2,4)
  13. # plt.plot([0,1],[0,4])
  14. #第二种分割,不是等量的分割
  15. plt.subplot(2,1,1)#先在上方划出一个两行一列的
  16. plt.plot([0,1],[0,1])
  17. #然后在下面划出一个两行三列的
  18. plt.subplot(2,3,4)
  19. plt.plot([0,1],[0,2])
  20. plt.subplot(2,3,5)
  21. plt.plot([0,1],[0,3])
  22. plt.subplot(2,3,6)
  23. plt.plot([0,1],[0,4])
  24. plt.show()

 输出图像

Subplot2grid的具体用法

  1. #subplot2grid,在一个图中显示多张表
  2. plt.figure()
  3. ax1=plt.subplot2grid((3,3),(0,0),colspan=3) #subplot2grid(shape,loc,colspan,rowspan) 第一个坐标是创建的网格,例子中是三行三列的,第二个坐标是占的位置,colspan的值显示图形站几列,rowspan的值显示图形站几行
  4. ax2=plt.subplot2grid((3,3),(1,0),colspan=2)
  5. ax3=plt.subplot2grid((3,3),(1,2),rowspan=2)
  6. ax4=plt.subplot2grid((3,3),(2,0))
  7. ax5=plt.subplot2grid((3,3),(2,1))
  8. ax1.plot([1,2],[1,2])
  9. ax1.set_title('ax1_title')
  10. plt.tight_layout()
  11. plt.show()

输出图像

次坐标轴 

  1. x = np.arange(0,10,0.1)
  2. y1 = 0.05*x**2
  3. y2 = -1*y1
  4. fig,ax1 = plt.subplots()
  5. #这一句话等价于 1.fig=plt.figure()生成一个画布 2.ax1 = fig.add_subplot(1,1,1)
  6. #涉及到subplot和subplots的区别,用到的时候搜一下
  7. ax2 = ax1.twinx()#表示ax2与ax1共享x轴
  8. ax1.plot(x,y1,'g-')#前面说过‘g-'意思是线是green绿的,线的形状是直线
  9. ax2.plot(x,y2,'b--')
  10. ax1.set_xlabel('xdata')
  11. ax1.set_ylabel('y1')
  12. ax2.set_ylabel('y2')
  13. plt.show()

输出结果

 

动画效果

  1. import numpy as np
  2. from matplotlib import pyplot as plt
  3. from matplotlib import animation
  4. fig,ax = plt.subplots()
  5. x = np.arange(0,2*np.pi,0.01)
  6. line,=ax.plot(x,np.sin(x))
  7. #就是sinx的图像
  8. def animate(i):
  9. line.set_ydata(np.sin(x+i/100))
  10. return line,
  11. def init():
  12. line.set_ydata(np.sin(x))
  13. return line,
  14. #为什么要加逗号?因为返回的是一个列表
  15. ani = animation.FuncAnimation(fig=fig,func=animate,frames=100,init_func=init,interval=20,blit=False)
  16. plt.show()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/508798
推荐阅读
相关标签
  

闽ICP备14008679号