博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 绘图---2D、3D散点图、折线图、曲面图
阅读量:5278 次
发布时间:2019-06-14

本文共 3496 字,大约阅读时间需要 11 分钟。

python中绘制2D曲线图需要使用到Matplotlib,Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

1. 绘制折线图

plt.plot() 可以用于绘制折线图。只传入一维的散点(n个)p1时,横坐标对应散点的次序,从0到n-1,纵坐标对应散点的值。示例:

# -*- coding: utf-8 -*-import matplotlib.pyplot as pltimport numpy as npp1=[0,1.1,1.8,3.1,4.0]  # 数据点#创建绘图图表对象,可以不显式创建,跟cv2中的cv2.namedWindow()用法差不多plt.figure('Draw')plt.plot(p1)  # plot绘制折线图plt.draw()  # 显示绘图plt.pause(5)  #显示5秒plt.savefig("easyplot01.jpg")  #保存图象plt.close()   #关闭图表

绘图:

plt.plot() 传入二维的散点p1,p2(p1和p2的长度要一样)时,横坐标x绘制p1,纵坐标y绘制p2,示例:

# -*- coding: utf-8 -*-import matplotlib.pyplot as pltimport numpy as npp1=[0,1.1,1.8,3.1,4.0]  # 数据点p2=[2,2.4,4.3,3.5,2.5]#创建绘图图表对象,可以不显式创建,跟cv2中的cv2.namedWindow()用法差不多plt.figure('Draw')plt.plot(p1,p2)  # plot绘制折线图plt.draw()  # 显示绘图plt.pause(5)  #显示5秒plt.savefig("easyplot01.jpg")  #保存图象plt.close()   #关闭图表

绘图:

2. 绘制散点图

plt.scatter()用于绘制散点图,传入参数必须是二维的:plt.scatter(p1,p2),示例:

# -*- coding: utf-8 -*-import matplotlib.pyplot as pltimport numpy as npp1=[0,1.1,1.8,3.1,4.0]  # 数据点p2=[2,2.4,4.3,3.5,2.5]#创建绘图图表对象,可以不显式创建,跟cv2中的cv2.namedWindow()用法差不多plt.figure('Draw')plt.scatter(p1,p2)  # scatter绘制散点图plt.draw()  # 显示绘图plt.pause(10)  #显示10秒plt.savefig("easyplot.jpg")  #保存图象plt.close()   #关闭图表

绘图:

plt.plot() 也可以用于绘制散点图,plt.plot(p1,p2,'ro')表示散点的颜色是红色,形状是o,示例:

# -*- coding: utf-8 -*-import matplotlib.pyplot as pltimport numpy as npp1=[0,1.1,1.8,3.1,4.0]  # 数据点p2=[2,2.4,4.3,3.5,2.5]#创建绘图图表对象,可以不显式创建,跟cv2中的cv2.namedWindow()用法差不多plt.figure('Draw')plt.plot(p1,p2,'ro')plt.draw()  # 显示绘图plt.pause(10)  #显示10秒plt.savefig("easyplot.jpg")  #保存图象plt.close()   #关闭图表

绘图:

3. 添加坐标轴说明、添加标题、图片中插入文字、显示网格

坐标轴说明:plt.xlabel()、plt.ylabel()
添加标题: plt.title()
插入文字: plt.text(60, .025, r'$number=5, sigma=0$')
显示网格: plt.grid(True)

# -*- coding: utf-8 -*-import matplotlib.pyplot as pltimport numpy as npp1=[0,1.1,1.8,3.1,4.0]  # 数据点p2=[2,2.4,4.3,3.5,2.5]#创建绘图图表对象,可以不显式创建,跟cv2中的cv2.namedWindow()用法差不多plt.figure('Draw')plt.plot(p1,p2,'ro')plt.xlabel('number of samples')plt.ylabel('value of samples')plt.title('sample data')plt.text(1.1, 3.6, r'$number=5, sigma=0$')plt.grid(True)plt.draw()  # 显示绘图plt.pause(10)  #显示10秒plt.savefig("easyplot.jpg")  #保存图象plt.close()   #关闭图表
绘图:

4. 绘制3D图曲面图

plot_surface()用于绘制3D曲面图:

# -*- coding: utf-8 -*-from matplotlib import pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()ax = Axes3D(fig)X = [0,1.1,1.8,3.1,4.0]Y = [2,2.4,4.3,3.5,2.5]X, Y = np.meshgrid(X, Y)Z = [2,2.4,4.3,3.5,2.5]ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')plt.draw()plt.pause(10)plt.savefig('3D.jpg')plt.close()
绘图:

使用plot_surface()绘制另一个3D曲面:

# -*- coding: utf-8 -*-from matplotlib import pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()ax = Axes3D(fig)X = np.arange(-4, 4, 0.25)Y = np.arange(-4, 4, 0.25)X, Y = np.meshgrid(X, Y)R = np.sqrt(X**2 + Y**2)Z = X*Yax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')plt.draw()plt.pause(10)plt.savefig('3D.jpg')plt.close()

绘图:

5. 绘制3D散点图

scatter()用于绘制3D散点图:

# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dx = [0,1.1,1.8,3.1,4.0]y = [2,2.4,4.3,3.5,2.5]z = [1,2,3,4,5]ax = plt.subplot(projection='3d')  # 创建一个三维的绘图工程ax.scatter(x, y, z, c='r')  # 绘制数据点,颜色是红色ax.set_zlabel('Z')  # 坐标轴ax.set_ylabel('Y')ax.set_xlabel('X')plt.draw()plt.pause(10)plt.savefig('3D.jpg')plt.close()

绘图:

转载于:https://www.cnblogs.com/mtcnn/p/9411753.html

你可能感兴趣的文章
推荐一款UI设计软件Balsamiq Mockups
查看>>
Linux crontab 命令格式与详细例子
查看>>
百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html
查看>>
游标使用
查看>>
LLBL Gen Pro 设计器使用指南
查看>>
SetCapture() & ReleaseCapture() 捕获窗口外的【松开左键事件】: WM_LBUTTONUP
查看>>
Android 设置界面的圆角选项
查看>>
百度地图api服务端根据经纬度得到地址
查看>>
CSS中隐藏内容的3种方法及属性值
查看>>
每天一个linux命令(1):ls命令
查看>>
根据xml生成相应的对象类
查看>>
查看ASP.NET : ViewState
查看>>
Android StageFrightMediaScanner源码解析
查看>>
vue项目中开启Eslint碰到的一些问题及其规范
查看>>
循环队列实现
查看>>
CSS层模型
查看>>
springBoot 项目 jar/war打包 并运行
查看>>
HDU 1501 Zipper
查看>>
打包java程序生成exe
查看>>
八叉树
查看>>