python matplotlib画图实例代码分享

作者:阿里贝尔 时间:2022-06-12 23:12:21 

python的matplotlib包支持我们画图,有点非常多,现学习如下。

首先要导入包,在以后的示例中默认已经导入这两个包


import matplotlib.pyplot as plt
import numpy as np

然后画一个最基本的图


t = np.arange(0.0, 2.0, 0.01)#x轴上的点,0到2之间以0.01为间隔
s = np.sin(2*np.pi*t)#y轴为正弦
plt.plot(t, s)#画图

plt.xlabel('time (s)')#x轴标签
plt.ylabel('voltage (mV)')#y轴标签
plt.title('About as simple as it gets, folks')#图的标签
plt.grid(True)#产生网格
plt.savefig("test.png")#保存图像
plt.show()#显示图像

这是在一个窗口中画单张图的过程,那么如何画多张图呢?画图的过程相同,无非是画多张,然后设定位置。


x1 = np.linspace(0.0, 5.0)#画图一
x2 = np.linspace(0.0, 2.0)#画图二
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)#面板设置成2行1列,并取第一个(顺时针编号)
plt.plot(x1, y1, 'yo-')#画图,染色
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')

plt.subplot(2, 1, 2)#面板设置成2行1列,并取第二个(顺时针编号)
plt.plot(x2, y2, 'r.-')#画图,染色
plt.xlabel('time (s)')
plt.ylabel('Undamped')

plt.show()

两张图的示例如下

python matplotlib画图实例代码分享

python matplotlib画图实例代码分享

直方图的画法


# -*- coding:utf-8 -*-
import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

mu = 100 # 正态分布的均值
sigma = 15 # 标准差
x = mu + sigma * np.random.randn(10000)#在均值周围产生符合正态分布的x值

num_bins = 50
n, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5)
#直方图函数,x为x轴的值,normed=1表示为概率密度,即和为一,绿色方块,色深参数0.5.返回n个概率,直方块左边线的x值,及各个方块对象
y = mlab.normpdf(bins, mu, sigma)#画一条逼近的曲线
plt.plot(bins, y, 'r--')
plt.xlabel('Smarts')
plt.ylabel('Probability')
plt.title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')#中文标题 u'xxx'

plt.subplots_adjust(left=0.15)#左边距
plt.show()

直方图如下

python matplotlib画图实例代码分享

3D图像的画法

3D离散点


#!/usr/bin/env python
# encoding: utf-8

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

x_list = [[3,3,2],[4,3,1],[1,2,3],[1,1,2],[2,1,2]]
fig = plt.figure()
ax = fig.gca(projection='3d')
for x in x_list:
 ax.scatter(x[0],x[1],x[2],c='r')
plt.show()

画空间平面


from mpl_toolkits.mplot3d.axes3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
X=np.arange(1,10,1)
Y=np.arange(1,10,1)
X, Y = np.meshgrid(X, Y)
Z = 3*X+2*Y+30
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap=cm.jet,linewidth=0, antialiased=True)
ax.set_zlim3d(0,100)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()

画空间曲面


from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.1)
Y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False)
#画表面,x,y,z坐标, 横向步长,纵向步长,颜色,线宽,是否渐变
ax.set_zlim(-1.01, 1.01)#坐标系的下边界和上边界

ax.zaxis.set_major_locator(LinearLocator(10))#设置Z轴标度
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))#Z轴精度
fig.colorbar(surf, shrink=0.5, aspect=5)#shrink颜色条伸缩比例(0-1),aspect颜色条宽度(反比例,数值越大宽度越窄)

plt.show()

3D图分别如下

python matplotlib画图实例代码分享

python matplotlib画图实例代码分享

python matplotlib画图实例代码分享

饼状图画法


# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'#设置标签
sizes = [15, 30, 45, 10]#占比,和为100
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']#颜色
explode = (0, 0.1, 0, 0) #展开第二个扇形,即Hogs,间距为0.1

plt.pie(sizes, explode=explode, labels=labels, colors=colors,autopct='%1.1f%%', shadow=True, startangle=90)#startangle控制饼状图的旋转方向
plt.axis('equal')#保证饼状图是正圆,否则会有一点角度偏斜

fig = plt.figure()
ax = fig.gca()

import numpy as np

ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors,autopct='%1.1f%%', shadow=True, startangle=90, radius=0.25, center=(0, 0), frame=True)
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90, radius=0.25, center=(1, 1), frame=True)
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90, radius=0.25, center=(0, 1), frame=True)
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90,radius=0.25, center=(1, 0), frame=True)

ax.set_xticks([0, 1])#设置位置
ax.set_yticks([0, 1])
ax.set_xticklabels(["Sunny", "Cloudy"])#设置标签
ax.set_yticklabels(["Dry", "Rainy"])
ax.set_xlim((-0.5, 1.5))
ax.set_ylim((-0.5, 1.5))

ax.set_aspect('equal')
plt.show()

饼状图如下:

python matplotlib画图实例代码分享

python matplotlib画图实例代码分享

平时用到的也就这几种,掌握这几种就差不多了,更多内容见

https://matplotlib.org/users/screenshots.html

来源:http://blog.csdn.net/ali197294332/article/details/51694141

标签:python,matplotlib
0
投稿

猜你喜欢

  • PyTorch实现更新部分网络,其他不更新

    2022-06-15 21:01:33
  • 关于对Java正则表达式"\\\\"的理解

    2023-06-24 07:23:02
  • python中ImageTk.PhotoImage()不显示图片却不报错问题解决

    2023-08-26 18:12:06
  • Oracle跨数据库查询并插入实现原理及代码

    2024-01-14 18:52:58
  • 原生JS实现九宫格抽奖

    2024-05-02 17:24:19
  • 使用OpenCV获取图片连通域数量,并用不同颜色标记函

    2023-10-17 19:58:05
  • 基于express中路由规则及获取请求参数的方法

    2024-05-11 10:17:53
  • PHP实现图片上传并压缩

    2024-05-22 10:06:09
  • MySQL慢查询之开启慢查询

    2024-01-23 16:16:03
  • Python爬虫库requests获取响应内容、响应状态码、响应头

    2022-05-03 14:37:27
  • Pytorch中.new()的作用详解

    2023-12-11 10:28:54
  • JavaScript原生对象常用方法总结(推荐)

    2024-05-05 09:15:20
  • matlab中乘法“*”和点乘“.*”;除法“/”和点除“./”的联系和区别

    2022-03-08 19:52:44
  • vue中子组件调用兄弟组件方法

    2024-04-30 10:24:44
  • 使用php-timeit估计php函数的执行时间

    2023-10-07 19:56:50
  • vue登录页面回车执行事件@keyup.enter.native问题

    2023-07-02 17:01:42
  • mysql中如何判断是否支持分区

    2024-01-19 18:00:57
  • Python爬虫信息输入及页面的切换方法

    2023-08-02 17:33:33
  • python+pytest自动化测试函数测试类测试方法的封装

    2021-12-26 21:03:14
  • python实现监控阿里云账户余额功能

    2022-08-19 23:43:32
  • asp之家 网络编程 m.aspxhome.com