python-matplotlib基本操作

注:学numpy后再来看

注释是重点!建议粘贴自己运行。

matplotlib简介

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。

简单使用(基本操作)

包括其基本的使用结构,配合numpy,加上基本使用方法。

示例代码+详细注释

# #开始
'''
# 基本结构为以下:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1,1,50)
y = 2*x+1
plt.plot(x,y)
plt.show()
'''


import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y1 = 2 * x + 1
y2 = x ** 2

plt.figure(num=3, figsize=(8, 5))  # 一个plt.figure表示一张图(num:图上的数figure3)
plt.plot(x, y1)

# 一张图上多条线(也可plt.plot(x,y1,x,y2,x,y3))
plt.figure()
plt.plot(x, y2)
plt.plot(x, y1, color="red", linewidth=3, linestyle="--")  # 图的特征(linewidth:线的宽度, linestyle:线的显示形式)
# x,y轴的范围
plt.xlim((-1, 2))
plt.ylim((-2, 3))
# x,y轴的标签
plt.xlabel("I am x")
plt.ylabel("I am y")
# 设置新的轴上数
new_ticks = np.linspace(-1, 2, 10)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,         -1.8,  -1,     1.22,    3],
          ["really bad", "bad", "normal", "good", "really good"])
# 改字体
'''plt.yticks([-2,         -1.8,  -1,     1.22,    3],
           [r"$really\ bad$",r"$bad$",r"$normal$",r"$good$",r"$really\ good$"])'''
# \alpha_1  # 可以变成数学符号且加了下标

# 得到整张图
ax = plt.gca()
# 边框设置 (将上右边框设置看不到)
ax.spines["right"].set_color('none')
ax.spines["top"].set_color('none')

# 直接设置x, y轴
# ax.xaxis.set_ticks_position("bottom")
# ax.yaxis.set_ticks_position("left")
# 挪动边框来作为x, y轴
ax.spines["bottom"].set_position(("data", -1))  # data这是个可变换类型(不确定)
ax.spines["left"].set_position(("data", -0.25))  # -0.25为在轴上点的坐标

plt.show()

对线标注

指明图中的每条线代表什么。

示例代码+详细注释

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y1 = 2 * x + 1
y2 = x ** 2
plt.figure()
plt.xlim((-1, 2))
plt.ylim((-2, 3))
plt.xlabel('I am x')
plt.ylabel('I am y')
new_ticks = np.linspace(-1, 2, 5)
print(new_ticks)
plt.xticks(new_ticks)
plt.plot(x, y1, label='up')  # label='up'对线进行标注
plt.plot(x, y2, color='red', linewidth=1, linestyle='--', label='down')
plt.legend()

plt.show()

scatter方法

将数据以点的形式显示在图上。
其参数

x,y形如shape(n,)数组:输入数据

示例代码+详细注释

散点图(scatter)

用scatter方法绘制散点图

示例代码+详细注释

import matplotlib.pyplot as plt
import numpy as np

plt.figure(num=1)
n = 1024
X = np.random.normal(0, 1, n)
Y = np.random.normal(0, 1, n)
T = np.arctan2(Y, X)  # for color value
plt .scatter(X, Y, s=75, c=T, alpha=0.5)

plt.figure(num=2)
plt.scatter(np.arange(10), np.arange(10))

plt.show()

第一张图片

柱状图(bar)

示例代码+详细注释

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
y = np.arange(10)
plt.bar(x, y)
plt.xticks(color='none')
plt.yticks()
plt.show()

3D图

np.meshgrid(X, Y)说明:生成绘制3D图形所需的网格数据。在计算机中进行绘图操作时, 往往需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3D绘图操作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标对(x, y),meshgrid就是产生这样两个矩阵,来简化我们的操作。

示例代码+详细注释

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = 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)  # 用来产生坐标矩阵
# X, Y, Z = np.meshgrid(X, Y, Z)  # 亦可
R = np.sqrt(X ** 2 + Y ** 2)
Z = np.sin(R)
# X,Y,Z数据均要有, rstride:行之间的跨度  cstride:列之间的跨度,cmap:控制三维曲面的颜色组合
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
plt.show()

在这里插入图片描述
此图可在运行好后,随意拖动观看任意角度

分格显示(xlim,ylim)

可以约束x,y上的范围

示例代码+详细注释

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 6, 0.25)
y = 1/3 * (x ** 3) - 2 * x
print(x)
plt.plot(x, y)
plt.xlim(-4, 4)
plt.ylim(-20, 20)
plt.show()

汉语展示

在图中一般不能直接使用汉语。
plt.title:标注题头方法
plt.annotate:图中进行标注方法
plt.grid:是否显示格方法

实例代码+详细注释

import matplotlib.pyplot as plt
import numpy as np

a = np.arange(0, 5, 0.02)  # 步长为0.02
plt.plot(a, np.cos(2 * np.pi * a), 'r--')

plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=20, color='green')  # 设置字体大小,字体类型,字体颜色
plt.ylabel('纵轴:振幅', fontproperties='SimHei', fontsize=20)
plt.title(r'正弦波', fontsize=15, fontproperties='SimHei')  # 题头
# plt.text(2,1,r'$\mu=100$', fontsize=15)  # 在x = 2,y =1,的地方注释

plt.annotate(r'$\mu=100$', xy=(2, 1), xytext=(3, 1.5), arrowprops=dict(facecolor='black', width=2))
# xy为箭头指向,xytext(字体写的位置)

plt.axis([-1, 6, -2, 2])  # 标定范围==xlim,ylim(注意格式)
plt.grid(True)  # 是否显示格
plt.show()

在这里插入图片描述

图中图(add_axes)

可以在图中画其他图形。

示例代码+详细注释

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
x = [1, 2, 3, 4, 5, 6, 7]
y = [1, 3, 4, 2, 5, 8, 6]
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
ax1 = fig.add_axes([left, bottom, width, height])  # 注意数据格式
ax1.plot(x, y, color='blue')

left, bottom, width, height = 0.2, 0.6, 0.25, 0.25  # 按照各边占比,开始画小图
ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(x, y, color='yellow')

left, bottom, width, height = 0.6, 0.2, 0.25, 0.25
ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(x, y, color='red')
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值