python绘图

我的未来我决定 提交于 2019-11-27 00:30:58

申明:本人博客为自己学习记录,本文学习内容主要来源以下两篇博客。

https://www.jianshu.com/p/78ba36dddad8

https://blog.csdn.net/lm_is_dc/article/details/81191207

1、基础知识

 

1.1 库

 

主要用到的两个库:

  • numpy
  • matplotlib.pyplot

 

1.2 图形组成标签

 

图片来源:https://www.jianshu.com/p/78ba36dddad8

 

几个重要的标签:

  • Figure(图像窗口):Figure 是包裹 Axes、tiles、legends 等组件的最外层窗口。它其实是一个 Windows 应用窗口。
  • Axes(轴域/子图):Axes 是带有数据的图像区域。一个 Figure 中可以有多个子图。
  • Axis(轴):X Axis和Y Axis。

 

1.3 导入库

 

import numpy as npimport matplotlib.pyplot as plt

 

2、绘图

2.1   包含单条曲线的图

  • 正比例函数
from matplotlib import pyplot as plt

x=[1,2,3,4,5]
y=[2,4,6,8,10]
plt.figure()    # 定义一个图像窗口
plt.plot(x,y)   # 绘制曲线
plt.show()      #显示图像

结果:

   

 

  • 指数函数

 

import numpy as np
from matplotlib import pyplot as plt

x1=np.arange(-np.pi,np.pi,0.01)
# y1=np.power(x1,2)   #指数函数
y1=x1**2              #指数函数(同上)
plt.figure()    # 定义一个图像窗口
plt.plot(x1,y1)  # 绘制曲线
plt.show()      #显示图像

 

结果:

 

 

2.2  包含多条曲线的图

  • 连续调用多次plot函数

 

import numpy as np
from matplotlib import pyplot as plt

x=[1,2,3,4,5]
y=[2,4,6,8,10]

x1=np.arange(-np.pi,np.pi,0.01)
# y1=np.power(x1,2)   #指数函数
y1=x1**2              #指数函数(同上)

plt.figure()    # 定义一个图像窗口

plt.plot(x,y)  # 绘制曲线y
plt.plot(x1,y1)  # 绘制曲线y1

plt.show()      #显示图像

 

结果:

 

  •  也可以在一个plot函数中传入多对X,Y值,在一个图中绘制多个曲线

 

import numpy as np
from matplotlib import pyplot as plt

x=[1,2,3,4,5]
y=[2,4,6,8,10]

x1=np.arange(-np.pi,np.pi,0.01)
# y1=np.power(x1,2)   #指数函数
y1=x1**2              #指数函数(同上)

plt.figure()    # 定义一个图像窗口

plt.plot(x,y,x1,y1)  # 绘制曲线y,y1,   注意顺序
#plt.plot(x1,y1)  # 绘制曲线y1

plt.show()      #显示图像

 

 

 

 

 

 2.3  将多个曲线图绘制在一个Figure(图像窗口)区域中:对象形式创建表图

 

 

a=plt.subplot(row,col,loc) 创建曲线图
a.plot(x,y) 绘制曲线图

 

 

实例:

import numpy as np
from matplotlib import pyplot as plt

x=[1,2,3,4,5]
y=[2,4,6,8,10]

x1=np.arange(-np.pi,np.pi,0.01)
# y1=np.power(x1,2)   #指数函数
y1=x1**2              #指数函数(同上)

x2=np.linspace(-np.pi,np.pi,5)   、
y2=np.sin(x)

plt.figure()    # 定义一个图像窗口

a1=plt.subplot(2,2,1) #创建曲线图
a1.plot(x,y) #绘制曲线图

a2=plt.subplot(2,2,2) #创建曲线图
a2.plot(x1,y1)  # 绘制曲线

a3=plt.subplot(223) #创建曲线图  可以省略逗号
a3.plot(x2,y2)  # 绘制曲线

plt.show()      #显示图像

 

结果:

 

 

 

2.4 网格线gride

 

 

参数:

 

  • axis      
  • color:支持十六进制颜色
  • linestyle: – -. :   
  • alpha     :

 

 

设置网格:

  • 直接设置:plt.grid()
  • 使用对象设置:a=plt.subplot(221)   a.grid()

 

import numpy as np
from matplotlib import pyplot as plt

x=np.linspace(-np.pi,np.pi,100)
y=np.sin(x)

a1=plt.subplot(221)
a1.grid()
a1.plot(x,y)

a2=plt.subplot(222)
a2.grid()
a2.plot(x,y)

a3=plt.subplot(223)
a3.grid()
a3.plot(x,y)

a4=plt.subplot(224)
a4.grid()
a4.plot(x,y)

plt.show()      #显示图像

 

 结果:

 

2.5 坐标轴界限

 

  • 修改x,y轴刻度值
plt.axis([xmin,xmax,ymin,ymax])

例如:plt.axis([-4,4,-2,2])

 

  • 关闭坐标轴

 

plt.axis('off')

 

 

  • 设置画布比例

 

plt.figure(figsize=(a,b))

 

参数:

  • a:x刻度比例;
  • b:y刻度比例
  • (2:1)表示x刻度显示为y刻度显示的2倍 。

 

 

 

 

  • xlim方法和ylim方法

                 可以通过plt的xlim(xmin,xmax),ylim方法设置坐标轴范围;

 

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

 

 

  • 通过对象的方式设置x,y轴的刻度值范围 ax.set_xlim(a,b)

 

ax1=plt.subplot(111)
ax1.set_xlim(-4,4)
ax1.set_ylim(-2,2)

 

 

 

 

 

2.6 坐标轴标签

 

  • color 标签颜色
  • fontsize 字体大小
  • rotation 旋转角度
  • plt的xlabel方法和ylabel方法

 

import numpy as np
from matplotlib import pyplot as plt

x=np.linspace(-np.pi,np.pi,100)
y=np.cos(x)
plt.title('tittle')
plt.ylabel('yyy',fontsize=16,rotation=90,color='r')
plt.xlabel('xxx',fontsize=16)
plt.plot(x,y)
plt.show()

结果:

 

  • 对象方法set_xlabel/ylabel()

 

 

2.6.1  显示坐标轴中文标签

 

设置参数:fontproperties

import numpy as np
from matplotlib import pyplot as plt

x=np.linspace(-np.pi,np.pi,100)
y=np.cos(x)
ax=plt.subplot(111)
ax.set_xlabel('x轴',fontproperties='KaiTi',fontsize=18)   #对象方法
ax.set_ylabel('y轴',fontproperties='KaiTi',fontsize=18)
ax.set_title('标题',fontproperties='KaiTi',fontsize=16)
ax.plot(x,y)
plt.show()

 

 

 

 

2.7、  标题

  • plt.title()方法
  • ax.set_title()方法

 

2.8、图例

 

2.8.1 legend方法

 

两种传参方法: 

  • - 分别在plot函数中增加label参数,再调用plt.legend()方法显示 
x=np.linspace(0,10,30)
y=x ** 2
plt.plot(x,y,label='aaa') #参数传递方法1,绘制曲线
plt.plot(x+1,y-1,label='bbb') 
plt.legend()

 

  • - 直接在legend方法中传入字符串列表

 

 

import numpy as np
from matplotlib import pyplot as plt
x=np.linspace(0,10,30)
y=x ** 2
plt.plot(x,y)
plt.plot(x+1,y-1)
plt.legend(['a','b'])
plt.show()

 

 

 

 

 

 

2.8.2 legend的参数

  •  loc参数 : 用于设置图例标签的位置,一般在legend函数内

  • matplotlib已经预定义好几种数字表示的位置,见下表:

例如:plt.legend(['aaa','bbb'],loc=5)

 

 

loc参数可以是2元素的元组,表示图例左下角的坐标:

 

  • [0,0] 左下
  • [0,1] 左上
  • [1,0] 右下
  • [1,1] 右上

  • ncol参数 : 控制图例中有几列,在legend中设置ncol。

例如:plt.legend(['aaa','bbb'],loc=[1,1],ncol=2)

(ncol:两行)

 

2.9、 保存图片

 

使用figure对象的savefig函数来保存图片:

  • 使用plt进行绘图。。。。。。。然后保存图片
  • 然后保存图片  plt.savefig(filename='./111.jpg',dpi=500)

参数说明:

  • 图像格式由文件扩展名推断得出,例如,.pdf推断出PDF,.png推断出PNG (“png”、“pdf”、“svg”、“ps”、“eps”……) 
  • dpi  : 图像分辨率(每英寸点数),默认为100 ;
  • facecolor :图像的背景色,默认为“w”(白色);

 

 

读取图片:

img=plt.imread('./111.jpg')

plt.imshow(img)

plt.show()

 

 

 

    为什么没有线了!!!

 

 

3、设置plot的风格和样式

 未完、、、、

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!