首页 > 编程语言 > 详细

python绘图

时间:2019-08-11 21:26:35      阅读:128      评论:0      收藏:0      [点我收藏+]

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

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的风格和样式

 未完、、、、

python绘图

原文:https://www.cnblogs.com/bltstop/p/11334371.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!