赞
踩
import imageio
im = imageio.imread(uri)
uri
:图片名称和路径
im
是生成的帧数据,代表一帧
imageio.mimsave(uri, ims, 'GIF', duration=0.1)
uri
:生成的gif名称和路径
ims
:由多个帧数据im组成的列表
'GIF'
:指定生成gif
duration
:帧与帧的间隔时间,单位为秒
from matplotlib import pyplot as plt
设置说明:matplotlib可以使用实例化对象后的方法进行设置,也可以直接使用plt的函数进行设置,下同
基本设置:
直接使用plt的函数设置:
plt.figure(figsize=(length, width)) #画布大小
plt.subplot(rows, cols, loc) #子画布
利用实例化对象的方法设置:
fig = plt.figure(figsize=(length, width)) #画布大小
ax = fig.add_subplot(rows, cols, loc) #子画布
fig
:画布,参数分别是画布长度和宽度
ax
:子画布,rows使fig分行,cols分列,loc是子画布的位置
画布微调:
fig.tight_layout()
plt.tight_layout()
可以自动调整一些重叠的情况
plt.method()
ax.method()
可直接在plt下调用画图函数,也可使用画布实例的方法进行画图(下同)
#小标题
plt.title('title')
ax.set_title('title')
#总标题(一般用于有多幅子图的情况)
fig.suptitle('title')
plt.suptitle('title')
plt.xlabel('xlabel')
ax.set_xlabel('xlabel')
对二维:
plt.xlim(xmin=None, xmax=None)
ax.set_xlim(xmin=None, xmax=None)
对三维:只能调用实例化方法
ax.set_xlim3d(xmin=None, xmax=None)
plt.grid(True)
ax.grid(True)
plt.axis('equal')
ax.axis('equal')
plt.ticklabel_format(axis='both', style='', scilimits=None)
ax.ticklabel_format(axis='both', style='', scilimits=None)
axis
:可选'both'
、'y'
、'x'
,表示对哪个坐标轴生效
style
:可选'sci'
、'scientific'
、'plain'
,前两个表示使用科学计数法,后一个表示不使用科学计数法
scilimits
:元组形式,
(
m
,
n
)
(m, n)
(m,n)表示该方法使用于范围在
(
1
0
m
,
1
0
n
)
(10^{m}, 10^{n})
(10m,10n)范围内的数字,
(
0
,
0
)
(0, 0)
(0,0)表示适用于所有数字
plt.legend(prop={"size": 10}, loc='upper right', ncol=4)
prop
:size关键词可以控制图例的大小
loc
:图例的位置
ncol
:图例分为多少列
也可以直接使用plt.legend()
来自动设置
plt.show() # 输出
plt.save('filename') # 储存
plt.clf() # 清空
plt.scatter(x, y,
s=None,
c=None,
marker=None,
edgecolors=None) #ax的方法与此相同
x
,y
:自变量数组与因变量数组
s
:散点大小
c
:散点颜色
marker
:散点形状
edgecolors
:散点边界颜色
plt.plot(x, y, 'o', color=None, markersize=None) #ax的方法与此相同
x
,y
:自变量数组与因变量数组
'o'
:表示圆形散点,若增加该参数则会生成散点图
(散点标记:圆形o、正方形s、星形*、正三角^、倒三角v)
color
:折线/散点颜色
markersize
:散点的大小
直接调用plt函数:
from mpl_toolkits.mplot3d import Axes3D
ax = Axes3D(plt.figure(), auto_add_to_figure=False)
plt.axes(ax)
使用实例化对象方法:
from mpl_toolkits.mplot3d import Axes3D
ax = Axes3D(fig, auto_add_to_figure=False)
fig.add_axes(ax)
散点图只能只调用实例化的Axes3D的方法绘制
ax.scatter(x, y, z,
s=None,
c=None,
marker=None,
edgecolors=None)
x
,y
,z
:散点的各个坐标
s
:散点大小
c
:散点颜色
marker
:散点形状
edgecolors
:散点边界颜色
plt.plot(x, y, z, color=None) #ax的方法与此相同
x
,y
,z
:自变量数组与因变量数组
color
:曲线颜色
曲面图只能调用实例化的Axes3D的方法绘制
ax.plot_surface(X, Y, Z,
rstride=1,
cstride=1,
cmap=None,
facecolor=plt.cm.colors(data))
X
,Y
:自变量网格数组
Z
:对X, Y计算得到的因变量
rstride
,cstride
:行跨度与列跨度
cmap
:曲面颜色(渐变色或纯色)
facecolor
:自定义曲面颜色,colors为颜色板颜色,如rainbow、viridis、Reds、Blues等,data形状同Z(相当于是将imshow灰度图铺在曲面上)
plt.imshow(Z, cmap=None) #ax的方法与此相同
Z
:网格数组
cmap
:颜色(渐变色或纯色)
plt.streamplot(x, y, U, V,
density=0.5,
linewidth=2,
color=None) #ax的方法与此相同
x
,y
:自变量一维数组
U
,V
:x方向和y方向的矢量分量网格数组
density
:流线密度
linewidth
:流线宽度
color
:颜色
plt.contourf(X, Y, Z, n1, cmap=None) #绘制颜色
lines = plt.contour(X, Y, Z, n2, colors=None) #绘制等势线并赋值
plt.clabel(lines, inline=True, fontsize=None) #绘制等势线上的数字
#ax的方法与此相同
X
,Y
:自变量网格数组
Z
:对X, Y计算得到的因变量
n1
,n2
:颜色变化速度与等势线密度
inline
:等势线不遮挡数字
fontsize
:数字大小
直接调用plt函数:
plt.subplot(rows, cols, loc, polar=True) #建立极坐标画布
plt.plot(rads, data, label=None) #绘制雷达折线
plt.fill(rads, data, alpha=None) #填充颜色
plt.thetagrids(180 * rads / np.pi, labels=None) #对齐
plt.show()
使用实例化对象方法:
ax = fig.add_subplot(rows, cols, loc, polar=True) #建立极坐标画布
ax.plot(rads, data, label=None) #绘制雷达折线
ax.fill(rads, data, alpha=None) #填充颜色
ax.set_thetagrids(180 * rads / np.pi, labels=None) #对齐
label
:图例
alpha
:填充颜色透明度
labels
:标签数组
rads
:弧度数组,首尾需相同
data
:数据数组,首尾需相同
plt.violinplot(dataset,
vert=True,
widths=0.5,
showmeans=False,
showextrema=True,
quantiles=None)
#ax的方法与此相同
dataset
:数据,数据类型为二维数组,每一列组成一个小提琴图;若为一维数组,则绘制单个小提琴图
vert
:是否要垂直放置,默认为竖直放置
widths
:图形最大宽度
showmeans
:是否显示均值点
showextrema
:是否显示数据极限值
quantiles
:列表类型,列表元素在0到1之间,表示显示这些n分点
plt.boxplot(x, labels=None, vert=None, showmeans=None) #ax的方法与此相同
x
:数据,输入若为二维ndarray,每一列组成一个箱型图;若为一维ndarray,则绘制单个箱型图;若为列表或列表内嵌套ndarray,则每一行组成一个箱型图
labels
:每一列的标签,默认为整数1, 2, 3, …
vert
:是否要垂直放置,默认为竖直放置
showmeans
:是否显示平均值,默认不显示
plt.bar(x, height, width=0.8, alpha=1, hatch=None) #ax的方法与此相同
x
:横坐标数据
height
:纵坐标数据
width
:条形宽度
alpha
:条形的透明度
hatch
:条形的纹理,可选'/'
,'\'
,'|'
, '-'
, '+'
, 'x'
, 'o'
, 'O'
, '.'
, '*'
,可以组合
文字标签与其他图像不同,画布不能自适应文字标签的位置,所以可以出现文字标签在坐标轴限制以外的区域的现象
plt.text(x, y, s,
c=None,
fontsize=10,
verticalalignment='bottom',
horizontalalignment='left',
rotation=0,
alpha=1)
#ax的方法与此相同
x
, y
:浮点数类型(不能是列表),文字标签的位置
s
:字符串类型,文字标签的内容
c
:文字标签颜色
fontsize
:整型,文字标签大小
verticalalignment
:垂直对齐方式,可选'center'
、'top'
、'bottom'
、'baseline'
horizontalalignment
:水平对齐方式,可选'center'
、'right'
、'left'
rotation
:文字标签旋转角度,逆时针为正
alpha
:文字标签透明度,范围为0~1
主要使用的是matplotlib的animation模块中的FuncAnimation
函数
FuncAnimation(fig, update, frames, interval=200)
fig
:画布
update
:更新函数
frames
:迭代帧列表,将列表的每个元素作为参数输入到update函数中
interval
:帧与帧之间的间隔时间,单位为ms,默认为200
例子
保存为GIF:
import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation fig = plt.figure() x, y = [], [] pic, = plt.plot([], [], 'r', animated=False) plt.title('alpha test') plt.xlim(0, 2 * np.pi) plt.ylim(-1, 1) def update(n): x.append(n) y.append(np.sin(n)) pic.set_data(x, y) return pic, ani = FuncAnimation(fig, update, frames=np.arange(0, 2*np.pi, 0.01), interval=20) ani.save('fig_name.gif')
若保存为mp4:
首先需要下载ffmpeg并添加进环境变量,具体见操作
import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation plt.rcParams['animation.ffmpeg_path'] = 'the_path_of_ffmpeg.exe' fig = plt.figure() x, y = [], [] pic, = plt.plot([], [], 'r', animated=False) plt.title('alpha test') plt.xlim(0, 2 * np.pi) plt.ylim(-1, 1) def update(n): x.append(n) y.append(np.sin(n)) pic.set_data(x, y) return pic, ani = FuncAnimation(fig, update, frames=np.arange(0, 2*np.pi, 0.01), interval=20) ani.save('fig_name.mp4')
注意,该函数不能直接在Jupyter中使用,且pic后面的逗号不能省略
在代码前加上:
plt.rcParams['font.sans-serif'] = ['字体']
或
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['字体']
‘字体’:各类中文字体的英文代码,部分如下:
'SimHei'
:黑体
'SimSun'
:宋体
'FangSong'
:仿宋
'NSimSun'
:新宋体
'KaiTi'
:楷体
'PMingLiU'
:新细明体
'Times New Roman'
:TNR字体
在代码前加上:
plt.rcParams['axes.unicode_minus'] = False
或
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False
在代码前加上:
plt.style.use('style_name')
style_name
为样式名称,如classic
样式种类列表可以通过下列代码查看:
plt.style.available
plt.clim(vmin, vmax)
vmin
:最小值
vmax
:最大值
from matplotlib import cm
cmap = cm.colors
其中colors
是颜色板
cmap.N # 表示该颜色板的颜色总数
cmap(i) # 表示颜色版的第i个颜色
import matplotlib
matplotlib.colors.rgb2hex(rgba)
其中,rgba是13列表或元素的RGB值或14的列表或元组的RGBA值
from matplotlib import cm
import matplotlib
cmap = cm.rainbow
range_color = []
for i in range(cmap.N):
rgb = cmap(i)
range_color.append(matplotlib.colors.rgb2hex(rgb))
print(range_color)
在绘制两个不同的图之间加入以下代码:plt.twinx()
或ax = ax.twinx()
即可
在绘制双y轴图像时,直接使用图例会重叠,因此需要使用下述办法:
1、先将绘图对象赋值,如绘制折线图时:
line_1, = plt.plot(..., label='xxx')
或
line_1, = ax.plot(..., label='xxx')
此处必须使用逗号
2、使用如下代码以显示复合图例
ax_list = [line_1, line_2, ...]
lables = [name.get_label() for name in ax_list]
plt.legend(ax_list, lables)
import pyecharts
pip install pyecharts
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
自上而下分别为:世界上各国位置信息,中国各省位置信息,中国各市位置信息
pip install snapshot-selenium
安装了pyecharts-snapshot后,需要下载chrome浏览器与相应版本的chromedriver,并将chromedriver.exe放在python文件夹的Scripts文件夹下
fig.render(filename)
filename:输出的文件名
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
make_snapshot(snapshot, fig.render(), filename)
filename:输出的文件名
pyecharts画图输入的数据格式是list
对于3D图,数据格式是二维list
list
的每一个元素是相应的坐标点,如:
[[x1, y1, z1],
[x2, y2, z2],
...,
[xn, yn, zn]]
其中[xi, yi, zi]
代表一个点的三维坐标
另外:对于处理成ndarray
的数据类型,在转换为list
时,要使用ndarray
自身的tolist()
方法,而不能使用list()
强制转换
绘图对象的方法均可以链式调用,即fig.method1().method2().method3()...
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
dimension=2,
max_=1, # 3D图像颜色板的最大值
min_=-1, # 3D图像颜色板的最小值
range_color=range_color, # 一维列表,3D图像颜色板(十六进制)
),
title_opts=opts.TitleOpts(title='主标题', subtitle='副标题'), # 主标题和副标题
toolbox_opts=opts.ToolboxOpts() # 显示工具箱
)
.render(filename)
同图片保存所述,保存图片为可交互html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。