Matplitlib绘图入门1,这一篇就够了
Posted 程序媛一枚~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplitlib绘图入门1,这一篇就够了相关的知识,希望对你有一定的参考价值。
Matplitlib绘图入门1,这一篇就够了
1. 绘制简单的图表(标题、标签轴、刻度轴、表说明)
- 设置标题title
- 设置线等说明legend
- 设置x轴标签xlabel,y轴标签ylable
- 取消设置轴刻度xticks,yticks【plt.yticks([]) # 去掉y轴刻度 plt.xticks([]) # 去掉x轴刻度】
# matplotlib基础
# 使用轴创建图形的最简单方法是使用 pyplot.subplots
# 使用 Axes.plot 在轴上绘制一些数据
import matplotlib.pyplot as plt
import numpy as np
# 创建图表(包含简单的坐标轴)
import pandas
fig, ax = plt.subplots()
# 绘制一些数据在坐标轴上
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 默认x(1,2,3,4),y:(1,4,2,3)
# 绘图(同如上俩句)
plt.plot([1, 2, 3, 4], [1, 3, 2, 4]) # 默认x(1,2,3,4),y:(1,3,2,4)
fig.show()
fig = plt.figure() # 没有轴的空表
fig.show()
fig, ax = plt.subplots() # 空表单轴
fig.show()
fig, axs = plt.subplots(2, 2) # 一个图表俩个轴
plt.title("test table") # 设置表title
plt.yticks([]) # 去掉y轴刻度
plt.xticks([]) # 去掉x轴刻度
plt.ylabel("height") # 设置y轴标签
plt.xlabel("width") # 设置x轴标签
plt.show()
# matplotlib绘图需要数据格式为numpy.array
# pandas.DataFrame转换为numpy.array
a = pandas.DataFrame(np.random.rand(4, 5), columns=list('abcde'))
a_asarray = a.values
# np.matrix转换为numpy.array
b = np.matrix([[1, 2], [3, 4]])
b_asarray = np.asarray(b)
# 基本上有两种方法可以使用matplotlib:
# - 显式创建数字和轴,并在它们上调用方法(“面向对象(OO)样式”)。
# - 依靠Pyplot自动创建和管理数字和轴,并使用Pyplot函数进行绘图。
x = np.linspace(0, 2, 100)
# 创建图表
fig, ax = plt.subplots() # 创建图表和轴
ax.plot(x, x, label='linear') # 在轴上绘制一些数据
ax.plot(x, x ** 2, label='quadratic') # 在轴上绘制更多的数据
ax.plot(x, x ** 3, label='cubic') # 在轴上绘制更多的数据
ax.set_xlabel('x label') # 添加x轴标签
ax.set_ylabel('y label') # 添加y轴标签
ax.set_title("Simple Plot") # 添加图表标题
ax.legend() # 添加图例解释
plt.show()
x = np.linspace(0, 2, 100)
plt.plot(x, x, label='linear') # 在轴上显式绘制数据
plt.plot(x, x ** 2, label='quadratic') # 在轴上显式绘制数据
plt.plot(x, x ** 3, label='cubic') # 在轴上显式绘制数据
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()
- matplotlib绘制需要数据格式numpy.array,所以pandas.DataFrame,np.matrix均需要调整为numpy.array就可绘制
# matplotlib绘图需要数据格式为numpy.array
# pandas.DataFrame转换为numpy.array
a = pandas.DataFrame(np.random.rand(4, 5), columns=list('abcde'))
a_asarray = a.values
# np.matrix转换为numpy.array
b = np.matrix([[1, 2], [3, 4]])
b_asarray = np.asarray(b)
2. 绘图辅助函数方法,绘制多个图(随机点绘制多个子图,点状、x状等)
import matplotlib.pyplot as plt
import numpy as np
# 当需要进行大量的绘图时,可以编写一个公共方法: 绘图辅助函数
# ax:轴
# data1:x轴data
# data2:y轴data
# param_dict:传递到ax.plot的参数
# out:返回值,返回绘制好的图表
def my_plotter(ax, data1, data2, param_dict):
out = ax.plot(data1, data2, **param_dict)
return out
# 一个子图
data1, data2, data3, data4 = np.random.randn(4, 100)
fig, ax = plt.subplots(1, 1) # 中间的逗号可有可无
out = my_plotter(ax, data1, data2, {'marker': 'x'})
plt.show()
# 俩个子图
fig, (ax1, ax2) = plt.subplots(1, 2)
my_plotter(ax1, data1, data2, {'marker': 'x'})
my_plotter(ax2, data3, data4, {'marker': 'o'})
plt.show()
3. 可交互式绘图(一图单线关闭新展现一图,及一图多线)
# 一图单线关闭展现另一个图,一图多线
import matplotlib.pyplot as plt
import numpy as np
# 可交互式绘图
plt.ioff()
for i in range(3):
plt.plot(np.random.rand(10))
plt.show() # 仅当第一个图关闭,第二个图出现
# 可交互式绘图
plt.ioff()
for i in range(3):
plt.plot(np.random.rand(10))
plt.show()
4. 3种方法简化加速渲染图
- mpl.rcParams[‘path.simplify_threshold’] = 1.0 # 可显著加快渲染
- mpl.rcParams[‘agg.path.chunksize’] = 10000 # 可显著加快渲染
- import matplotlib.style as mplstyle
mplstyle.use(‘fast’) # 优化以加速渲染速度
# 线段简化示例
# 提升绘制效率,简化曲线 RCParams [“path.simplify_threshold”](默认值:0.111111111111)控制简化了多少线段;更高的阈值导致更快的渲染。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
# 初始化图表数据
y = np.random.rand(100000)
# print(y.shape)
y[50000:] *= 2
# print(y.shape)
# 类似于np.logspace 生成对数数组,指定了起始及返回值
y[np.geomspace(10, 50000, 400).astype(int)] = -1
mpl.rcParams['path.simplify'] = True
print(np.geomspace(10, 50000, 400).astype(int).shape)
print(np.geomspace(10, 50000, 400).astype(int))
mpl.rcParams['path.simplify_threshold'] = 0.0
plt.plot(y)
plt.show()
mpl.rcParams['path.simplify_threshold'] = 1.0 # 可显著加快渲染
plt.plot(y)
plt.show()
# 将线分割成更小的块
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['path.simplify_threshold'] = 1.0
# 初始化要绘制的数据
y = np.random.rand(100000)
y[50000:] *= 2
y[np.geomspace(10, 50000, 400).astype(int)] = -1
mpl.rcParams['path.simplify'] = True
mpl.rcParams['agg.path.chunksize'] = 0
plt.plot(y)
plt.show()
mpl.rcParams['agg.path.chunksize'] = 10000 # 可显著加快渲染
plt.plot(y)
plt.show()
# 将线分割成更小的块
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.style as mplstyle
mplstyle.use('fast') # 优化以加速渲染速度
mplstyle.use(['dark_background', 'ggplot', 'fast'])
mpl.rcParams['path.simplify_threshold'] = 1.0
# 初始化要绘制的数据
y = np.random.rand(100000)
y[50000:] *= 2
y[np.geomspace(10, 50000, 400).astype(int)] = -1
mpl.rcParams['path.simplify'] = True
mpl.rcParams['agg.path.chunksize'] = 0
plt.plot(y)
plt.show()
mpl.rcParams['agg.path.chunksize'] = 10000 # 可显著加快渲染
plt.plot(y)
plt.show()
参考
以上是关于Matplitlib绘图入门1,这一篇就够了的主要内容,如果未能解决你的问题,请参考以下文章