matplotlib使用及相关函数参数总结

matplotlib

python-2D绘图使用的套件。

pylab是matplotlib面向对象绘图的一个接口,语法和matlab相近。

from pylab import *
import numpy as np
x = np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S = np.cos(x),np.sin(x)

默认配置由用户自定义:图片大小、分辨率、线宽、颜色、风格、坐标轴、坐标轴和网格属性等。

import numpy as np
import matplotlib.pyplot as plt
plt.plot(x,C)
plt.plot(x,S)

plt.show()

在这里插入图片描述

#导入matplotlib所有内容
from pylab import *
#创建一个8*6点的图,设置分辨率为80
figure(figsize=(8,6),dpi=80)

#创建一个新的1*1子图,下面的图样绘制在其中的第一块
subplot(1,1,1)

x = np.linspace(-np.pi,np.pi,256,endpoint=True)
C,S = np.cos(x),np.sin(x)

#绘制余弦曲线,使用蓝色、连续、宽度为1(像素)的线条。
plot(x,C,color="blue",linewidth=1.0,linestyle="-")

#绘制正弦曲线,使用绿色、连续、宽度1(像素)的线条
plot(x,S,color="green",linewidth=1.0,linestyle="-")

#设置横轴上下限
xlim(-4.0,4.0)

#设置横轴记号
xticks(np.linspace(-4,4,9,endpoint=True))

#设置纵轴上下限
ylim(-1.0,1.0)

#设置纵轴记号
yticks(np.linspace(-1,1,5,endpoint=True))

#以分辨率72来保存图片
# savefig("exercice_2.png",dpi=72)

#在屏幕上显示
show()

在这里插入图片描述

2. 改变线条的颜色和粗细

#水平方向加长
figure(figsize=(10,6),dpi=80)

#线条加粗
plot(x,C,color="blue",linewidth=2.5,linestyle="-")
plot(x,S,color="red",linewidth=2.5,linestyle="-")
[<matplotlib.lines.Line2D at 0x21597023080>]

在这里插入图片描述

3. 设置图片边界

plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-")
plt.plot(x, S, color="red", linewidth=2.5, linestyle="-")


Xmin ,Xmax = x.min(), x.max()
ymin, ymax = C.min(), C.max()

dx = (Xmax - Xmin) * 0.2
dy = (ymax - ymin) * 0.2

xlim(Xmin - dx, Xmax + dx)   
# 扩展x,y轴的坐标范围
ylim(ymin - dy, ymax + dy)
(-1.399984822022966, 1.3999089321377967)

在这里插入图片描述

4. 设置记号

plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-")
plt.plot(x, S, color="red", linewidth=2.5, linestyle="-")

xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi]) #对特定位置的值进行标记。
yticks([-1,0,+1])
([<matplotlib.axis.YTick at 0x21595db7898>,
  <matplotlib.axis.YTick at 0x21595db7d68>,
  <matplotlib.axis.YTick at 0x215970c13c8>],
 [Text(0, 0, ''), Text(0, 0, ''), Text(0, 0, '')])

在这里插入图片描述

5. 设置记号标签

plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-")
plt.plot(x, S, color="red", linewidth=2.5, linestyle="-")

#设置成特征的标签
xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi],
       [r'$-\pi$',r'$-\pi/2$',r'$0$',r'$+\pi/2$',r'$+\pi$'])
yticks([-1,0,1],
       [r'$-1$',r'$0$',r'$+1$'])
([<matplotlib.axis.YTick at 0x2159720a630>,
  <matplotlib.axis.YTick at 0x2159720a0b8>,
  <matplotlib.axis.YTick at 0x215970abf60>],
 [Text(0, -1, '$-1$'), Text(0, 0, '$0$'), Text(0, 1, '$+1$')])

在这里插入图片描述

6. 移动脊柱

坐标轴和上面的记号连在一起形成了脊柱,记录数据区域的范围,可以放在任意位置。
每幅图有四个脊柱,为了将脊柱放在图的中间,必须将其中的两条设置为无色。
再调整剩下的两条到合适的位置-数据空间的0点。

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(x), np.sin(x)
plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-")
plt.plot(x, S, color="red", linewidth=2.5, linestyle="-")

plt.xlim(x.min()*1.1, x.max()*1.1)
# 设置x轴的格式,真实数值和显示数值结合。显示数值使用latex格式。
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
       [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

plt.ylim(C.min()*1.1,C.max()*1.1)
plt.yticks([-1, 0, +1],
       [r'$-1$', r'$0$', r'$+1$'])

ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

plt.show()

在这里插入图片描述

7. 添加图例

plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-",label="cosine")
# label参数解释每个图像代表的含义,为legend函数做铺垫。
plt.plot(x, S, color="red", linewidth=2.5, linestyle="-",label="sine")

legend(loc='upper left') #图例所有图像位置。
<matplotlib.legend.Legend at 0x215970188d0>

在这里插入图片描述

8. 为一些特殊点做注释

函数annotate标注绘图的某些特征,需要考虑:由参数xy表示的标注位置和xytext的文本位置。两参数都是(x,y)元组。

plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-",label="cosine")
# label参数解释每个图像代表的含义,为legend函数做铺垫。
plt.plot(x, S, color="red", linewidth=2.5, linestyle="-",label="sine")

legend(loc='upper left') #图例所有图像位置。

plt.xlim(x.min()*1.1, x.max()*1.1)
# 设置x轴的格式,真实数值和显示数值结合。显示数值使用latex格式。
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
       [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

plt.ylim(C.min()*1.1,C.max()*1.1)
plt.yticks([-1, 0, +1],
       [r'$-1$', r'$0$', r'$+1$'])

ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

t = 2*np.pi/3
# 绘制连接两点的虚线
plot([t,t],[0,np.cos(t)],color = 'blue',linewidth = 2.5,linestyle = "--")
# scatter绘制散点图,[t,],[np.cos(t),]表示x,y坐标,以数组形式表示。
# 50为标量或数组表形状
scatter([t,],[np.cos(t),],50,color='blue')

# xy表示标注位置,xytext表示文本位置,xycoords表示依据轴,arrowprops表示箭头格式
annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
         xy = (t,np.sin(t)),xycoords='data',
         xytext = (+10,+30),textcoords = 'offset points',fontsize=16,
         arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))

plot([t,t],[0,np.sin(t)],color = 'red',linewidth=2.5,linestyle="--")
scatter([t,],[np.sin(t),],50,color='red')

annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
         xy = (t,np.cos(t)),xycoords='data',
         xytext = (-90,-50),textcoords = 'offset points',fontsize=16,
         arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))

Text(-90, -50, '$\\cos(\\frac{2\\pi}{3})=-\\frac{1}{2}$')

在这里插入图片描述

9. 精细化修改图像

# label参数解释每个图像代表的含义,为legend函数做铺垫。
# 参数zorder是表征绘图顺序。隐藏在坐标轴下。
plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-", label="cosine",
         zorder=-1)
plt.plot(x, S, color="red", linewidth=2.5, linestyle="-",  label="sine",
        zorder=-2)

legend(loc='upper left') #图例所有图像位置。

plt.xlim(x.min()*1.1, x.max()*1.1)
# 设置x轴的格式,真实数值和显示数值结合。显示数值使用latex格式。
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
       [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])

plt.ylim(C.min()*1.1,C.max()*1.1)
plt.yticks([-1, 0, +1],
       [r'$-1$', r'$0$', r'$+1$'])

# gca函数获取当前坐标轴。gcf函数获取当前图像。
ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

t = 2*np.pi/3
# 绘制连接两点的虚线
plot([t,t],[0,np.cos(t)],color = 'blue',linewidth = 2.5,linestyle = "--")
# scatter绘制散点图,[t,],[np.cos(t),]表示x,y坐标,以数组形式表示。
#50为标量或数组表形状
scatter([t,],[np.cos(t),],50,color='blue')

# xy表示标注位置,xytext表示文本位置,xycoords表示依据轴,arrowprops表示箭头格式
annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
         xy = (t,np.sin(t)),xycoords='data',
         xytext = (+10,+30),textcoords = 'offset points',fontsize=16,
         arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))

plot([t,t],[0,np.sin(t)],color = 'red',linewidth=2.5,linestyle="--")
scatter([t,],[np.sin(t),],50,color='red')

annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
         xy = (t,np.cos(t)),xycoords='data',
         xytext = (-90,-50),textcoords = 'offset points',fontsize=16,
         arrowprops=dict(arrowstyle="->",connectionstyle="arc3,rad=.2"))



for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(16)
    label.set_bbox(dict(facecolor='white',edgecolor='None',alpha=0.65))

在这里插入图片描述

10. 图像、子图、坐标轴和记号

  1. 图像:用户界面看到的整个窗口内容。
  2. 子图:由坐标网格确定的图像。

以下参数是图像的属性:

参数默认值描述
num1图像的数量
figsizefigure.figsize图像的长和宽(英寸)
dpifigure.dpi分辨率(点/英寸)
facecolorfigure.facecolor绘图区域的背景颜色
edgecolorfigure.edgecolor绘图区域边缘颜色
frameonTrue是否绘制图像边缘

matplotlib中可以使用close函数来关闭图形窗口:

  1. 不传递参数,关闭当前窗口。
  2. 传递窗口编号或窗口实例,关闭指定窗口。
  3. all,关闭所有窗口。

10.1 子图

可以用子图将图样放在均匀的坐标网格。

from pylab import *

# subplot(m,n,p),m,n分别表示在一个图像窗口中有m行n列图像区域组成。
# subplot(m,n,p),p表示现在选定的是第p个图象区域。
subplot(2,1,1)
# xticks(ticks, [labels], **kwargs)函数
# ticks,数组类型,来设置x轴刻度间隔,labels数组类型,设置每个间隔的显示标签。
# **kwargs设置标签字体倾斜度和颜色等外观属性。
xticks([]),yticks([])
# plt.text(x, y, string, weight="bold", color="b")
# 添加图形内容细节的无指向性注释文本。ha参数控制水平对齐方式, va控制垂直对齐方式。
# alpha参数设置透明度。
text(0.5,0.5,'subplot(2,1,1)',ha='center',va='center',size=24,alpha=0.5)

subplot(2,1,2)
xticks([]),yticks([])
text(0.5,0.5,'subplot(2,1,2)',ha='center',va='center',size=24,alpha=0.5)

show()

在这里插入图片描述

gridspec功能应用。

from pylab import *

import matplotlib.gridspec as gridspec

# 将图像分为三行三列。
G = gridspec.GridSpec(3,3)

#第一个图占用了第1行和所有列。
axes_1 = subplot(G[0,:])
xticks([]),yticks([])
text(0.5,0.5,'Axes 1',ha='center',va='center',size=24,alpha=0.5)

# 第2个图,占用了第2行和第1列和第2列.
axes_2 = subplot(G[1,:-1])
xticks([]),yticks([])
text(0.5,0.5,'Axes 2',ha='center',va='center',size=24,alpha=0.5)

#第三个图占用了第2行和第3行和第3列。
axes_3 = subplot(G[1:,-1])
xticks([]),yticks([])
text(0.5,0.5,'Axes 3',ha='center',va='center',size=24,alpha=0.5)

# 第四个图占用了第3行和第1列.
axes_4 = subplot(G[-1,0])
xticks([]),yticks([])
text(0.5,0.5,'Axes 4',ha='center',va='center',size=24,alpha=0.5)

# 第5个图占用了第3行和第2列。
axes_1 = subplot(G[-1,-2])
xticks([]),yticks([])
text(0.5,0.5,'Axes 5',ha='center',va='center',size=24,alpha=0.5)

show()

在这里插入图片描述

10.2 坐标轴

from pylab import *

# plt.axes((left, bottom, width, height), facecolor=‘w’)
# 使用subplot和axes具有同样的效果。axes生成子图应用很广泛。
axes([0.1,0.1,0.8,0.8])

xticks([]),yticks([])
text(0.6,0.6,'axes([0.1,0.1,0.8,0.8])',ha='center',va='center',size=20,alpha=0.5)

axes([0.2,0.2,0.3,0.3])

xticks([]),yticks([])
text(0.5,0.5,'axes([0.2,0.2,0.3,0.3])',ha='center',va='center',size=16,alpha=0.5)

show()

在这里插入图片描述

10.3 记号

11. 各种图的类型

11.1 普通图

from pylab import *
import numpy as np

n = 256
# linspace用来创建等差数列,默认50个数值。
x = np.linspace(-np.pi,np.pi,n,endpoint=True)
y = np.sin(2*x)

plot(x,y+1,color='blue',alpha=1)
plot(x,y-1,color='blue',alpha=1)
show()

在这里插入图片描述

  1. linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
  2. endpoint=True,即stop对应数值为最后一个数
  3. retstep If True, return (samples, step), where step is the spacing between samples.
  4. plt.plot(x, y, ls=’-’, lw=2, label=‘xxx’, color=‘g’ ),其中label为标签文本

11.2 散点图

from pylab import *
import numpy as np

n = 1024
# 参数为均值、标准差、shape。
x = np.random.normal(0,1,n)
y = np.random.normal(0,1,n)

scatter(x,y)
show()

在这里插入图片描述

scatter(x,y,s=20,c=‘b’,marker=‘o’,cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,hold=None,**kwargs)

绘制散点图,x,y是相同长度的数组序列。

参数属性功能
x,y:形如shape[n]数组输入数据
s:标量,形如shape[n,]数组,可选,默认20size in points^2
c:色彩或颜色序列,可选,默认注意C不应是一个单一的RGB数字或RGBA序列,因为不便区分,可以是二维行数组
marker:MarkerStyle,可选,默认’o’参阅markers属性
cmap:Colormap,可选,默认:None颜色设置
normNormalize可选,默认:None数据亮度0-1,float数据
vmin、vmax:标量,可选,默认:None亮度设置,若norm实例已使用,则无效
alpha:标量,可选,默认:None0-1
linewidths:标量或数组,默认:None

颜色参数:

b—blue c—cyan g—green k—black

m—magenta r—red w—white y—yellow

优化图形

from pylab import *
import numpy as np

n = 1024
# 参数为均值、标准差、shape。
x = np.random.normal(0,1,n)
y = np.random.normal(0,1,n)
# atan2() 返回给定的 X 及 Y 坐标值的反正切值。
T = np.arctan2(y,x)

axes([0.025,0.025,0.95,0.95])
scatter(x,y,s=75,c=T,alpha=0.5)

show()

在这里插入图片描述

11.3 条形图

from pylab import *
import numpy as np

n = 12
x = np.arange(n)
# random.uniform()随机生成下一个实数,在[x,y]范围内。
y1 = (1-x/float(n))*np.random.uniform(0.5,1.0,n)
y2 = (1-x/float(n))*np.random.uniform(0.5,1.0,n)
# bar(left, height, width, color, align, yerr),柱形图。
bar(x,+y1,facecolor='#9999ff',edgecolor='white')
bar(x,-y2,facecolor='#ff9999',edgecolor='white')

# zip()将迭代对象打包成一个元组。
for X,Y in zip(x,y1):
    text(X+0.4,Y+0.05,'%.2f' %Y,ha='center',va='bottom')
    
ylim(-1.25,+1.25)
show()

在这里插入图片描述

bar(left, height, width, color, align, yerr)绘制柱形图。

  1. align: 柱子对齐方式,有两个可选值:center和edge。center表示每根柱子是根据下标来对齐, edge则表示每根柱子全部以下标为起点,然后显示到下标的右边。如果不指定该参数,默认值是center。
  2. yerr:每根柱子顶端在纵轴方向的线段。如果指定一个固定值,所有柱子的线段将一直长;如果指定一个带有不同长度值的列表,那么柱子顶部的线段将呈现不同长度。

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

  1. range(start, end, step),返回一个list对象,起始值为start,终止值为end,但不含终止值,步长为step。只能创建int型list。

  2. arange(start, end, step),与range()类似,但是返回一个array对象。需要引入import numpy as np,并且arange可以使用float型数据。

11.4 等高线图

from pylab import *
import numpy as np

def f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

n = 256
# 生成等差数列,[-3,3]范围内。
x = np.linspace(-3,3,n)
y = np.linspace(-3,3,n)
# meshgrid生成网格点坐标矩阵。生成二维矩阵。
X,Y = np.meshgrid(x,y)
# cmap=colormaps,获取图谱:plt.get_cmap(‘xxx’) 
contourf(X,Y,f(X,Y),8,alpha=0.75,cmap='jet')
C = contour(X,Y,f(X,Y),8,colors='black')
# 在等高线上增加值标签,inline表征标签值嵌入轮廓中的相对位置。
clabel(C, inline=1, fontsize=10)
show()

在这里插入图片描述

X # meshgrid通常使用在数据的矢量化上,可以接受两个一维数组生成两个二维矩阵,对应两个数组中所有的(x,y)对。
array([[-3.        , -2.97647059, -2.95294118, ...,  2.95294118,
         2.97647059,  3.        ],
       [-3.        , -2.97647059, -2.95294118, ...,  2.95294118,
         2.97647059,  3.        ],
       [-3.        , -2.97647059, -2.95294118, ...,  2.95294118,
         2.97647059,  3.        ],
       ...,
       [-3.        , -2.97647059, -2.95294118, ...,  2.95294118,
         2.97647059,  3.        ],
       [-3.        , -2.97647059, -2.95294118, ...,  2.95294118,
         2.97647059,  3.        ],
       [-3.        , -2.97647059, -2.95294118, ...,  2.95294118,
         2.97647059,  3.        ]])
x
array([-3.        , -2.97647059, -2.95294118, -2.92941176, -2.90588235,
       -2.88235294, -2.85882353, -2.83529412, -2.81176471, -2.78823529,
       -2.76470588, -2.74117647, -2.71764706, -2.69411765, -2.67058824,
       -2.64705882, -2.62352941, -2.6       , -2.57647059, -2.55294118,
       -2.52941176, -2.50588235, -2.48235294, -2.45882353, -2.43529412,
       -2.41176471, -2.38823529, -2.36470588, -2.34117647, -2.31764706,
       -2.29411765, -2.27058824, -2.24705882, -2.22352941, -2.2       ,
       -2.17647059, -2.15294118, -2.12941176, -2.10588235, -2.08235294,
       -2.05882353, -2.03529412, -2.01176471, -1.98823529, -1.96470588,
       -1.94117647, -1.91764706, -1.89411765, -1.87058824, -1.84705882,
       -1.82352941, -1.8       , -1.77647059, -1.75294118, -1.72941176,
       -1.70588235, -1.68235294, -1.65882353, -1.63529412, -1.61176471,
       -1.58823529, -1.56470588, -1.54117647, -1.51764706, -1.49411765,
       -1.47058824, -1.44705882, -1.42352941, -1.4       , -1.37647059,
       -1.35294118, -1.32941176, -1.30588235, -1.28235294, -1.25882353,
       -1.23529412, -1.21176471, -1.18823529, -1.16470588, -1.14117647,
       -1.11764706, -1.09411765, -1.07058824, -1.04705882, -1.02352941,
       -1.        , -0.97647059, -0.95294118, -0.92941176, -0.90588235,
       -0.88235294, -0.85882353, -0.83529412, -0.81176471, -0.78823529,
       -0.76470588, -0.74117647, -0.71764706, -0.69411765, -0.67058824,
       -0.64705882, -0.62352941, -0.6       , -0.57647059, -0.55294118,
       -0.52941176, -0.50588235, -0.48235294, -0.45882353, -0.43529412,
       -0.41176471, -0.38823529, -0.36470588, -0.34117647, -0.31764706,
       -0.29411765, -0.27058824, -0.24705882, -0.22352941, -0.2       ,
       -0.17647059, -0.15294118, -0.12941176, -0.10588235, -0.08235294,
       -0.05882353, -0.03529412, -0.01176471,  0.01176471,  0.03529412,
        0.05882353,  0.08235294,  0.10588235,  0.12941176,  0.15294118,
        0.17647059,  0.2       ,  0.22352941,  0.24705882,  0.27058824,
        0.29411765,  0.31764706,  0.34117647,  0.36470588,  0.38823529,
        0.41176471,  0.43529412,  0.45882353,  0.48235294,  0.50588235,
        0.52941176,  0.55294118,  0.57647059,  0.6       ,  0.62352941,
        0.64705882,  0.67058824,  0.69411765,  0.71764706,  0.74117647,
        0.76470588,  0.78823529,  0.81176471,  0.83529412,  0.85882353,
        0.88235294,  0.90588235,  0.92941176,  0.95294118,  0.97647059,
        1.        ,  1.02352941,  1.04705882,  1.07058824,  1.09411765,
        1.11764706,  1.14117647,  1.16470588,  1.18823529,  1.21176471,
        1.23529412,  1.25882353,  1.28235294,  1.30588235,  1.32941176,
        1.35294118,  1.37647059,  1.4       ,  1.42352941,  1.44705882,
        1.47058824,  1.49411765,  1.51764706,  1.54117647,  1.56470588,
        1.58823529,  1.61176471,  1.63529412,  1.65882353,  1.68235294,
        1.70588235,  1.72941176,  1.75294118,  1.77647059,  1.8       ,
        1.82352941,  1.84705882,  1.87058824,  1.89411765,  1.91764706,
        1.94117647,  1.96470588,  1.98823529,  2.01176471,  2.03529412,
        2.05882353,  2.08235294,  2.10588235,  2.12941176,  2.15294118,
        2.17647059,  2.2       ,  2.22352941,  2.24705882,  2.27058824,
        2.29411765,  2.31764706,  2.34117647,  2.36470588,  2.38823529,
        2.41176471,  2.43529412,  2.45882353,  2.48235294,  2.50588235,
        2.52941176,  2.55294118,  2.57647059,  2.6       ,  2.62352941,
        2.64705882,  2.67058824,  2.69411765,  2.71764706,  2.74117647,
        2.76470588,  2.78823529,  2.81176471,  2.83529412,  2.85882353,
        2.88235294,  2.90588235,  2.92941176,  2.95294118,  2.97647059,
        3.        ])

mgrid():返回多维结构,常见的如2D图形,3D图形。对比np.meshgrid,在处理大数据时速度更快,且能处理多维(np.meshgrid只能处理2维)
ret = np.mgrid[ 第1维,第2维 ,第3维 , …]
返回多值,以多个矩阵的形式返回,

第1返回值为第1维数据在最终结构中的分布,

第2返回值为第2维数据在最终结构中的分布,以此类推。

contour和contourf都是三维等高线图绘制函数,contourf对等高线间的区域进行填充。

其中前两个参数x和y为两个等长一维数组,第三个参数z为二维数组(表示平面点xi,yi映射的函数值)。

coutour([X, Y,] Z,[levels], **kwargs):

11.5 热图(灰度图)

from pylab import *
import numpy as np

def f(x,y): return (1-x/2+x**5+y**3)*np.exp(-x**2-y**2)

n = 10
x = np.linspace(-3,3,4*n)
y = np.linspace(-3,3,3*n)
X,Y = np.meshgrid(x,y)
# imshow函数是灰度图绘制的主要函数。
imshow(f(X,Y))
# 增加边条标签
colorbar(shrink=.92)
show()

在这里插入图片描述

imshow(X, cmap=None, norm=None, aspect=None,
interpolation=None, alpha=None, vmin=None, vmax=None,
origin=None, extent=None, shape=None, filternorm=1,
filterrad=4.0, imlim=None, resample=None, url=None, **kwargs)

  • X 可以使类似数组的对象,或者是PIL类型图像,其中,数组对象可选shape为:

    (M, N)
    单纯的二维数组,元素是标量数据,会通过colormap展示
    (M, N, 3)
    RGB三通道图像,元素值可以是0−1
    
    之间的float或者0−255
    之间的int
    (M, N, 4)
    
    RGBA图像,多出来的一维属性,比如是透明度,其元素值和3通道的一样,可以是0−1
    之间的float或者0−255之间的int
    
  • cmap

    str 或 matplotlib.colors.Colormap类型,用于将标量数据映射到颜色的Colormap实例或已注册的Colormap名称。
    
  • norm

    在使用cmap之前,用来将二维数组数据归一化到[0,1],默认是线性的,最小值对应0,最大值对应1。
    
  • interpolation 插值方法,默认’nearest’,可以支持的方法有:

    'none'
    'nearest'
    'bilinear'
    'bicubic'
    'spline16'
    'spline36'
    'hanning'
    'hamming'
    'hermite'
    'kaiser'
    'quadric'
    'catrom'
    'gaussian'
    'bessel'
    'mitchell'
    'sinc'
    'lanczos'
    
  • vmin, vmax

    当输入的时二维数组标量数据并且没有明确的norm时,vmin和vmax定义colormap覆盖的数据范围,默认情况下,colormap覆盖所提供的值的完整范围数据
    
  • origin

    坐标轴的样式,可选值为upper和lower
    

    利用seaborn生成的热图,cbar=True可以默认生成colorbar。

  • Seaborn的heatmap各参数介绍

    seaborn.heatmap(data,vmin=None,vmax=None,cmap=None,center=None,robust=False,annot=None,fmt='2g',annotkws=None,linewidths=0,linecolor='white',
    cbar=True,cbarkws=None,cbar_ax=None,square=False,ax=None,xticklabels=Ture,yticklabels=Ture,mask=None,**kwargs)
    
  • data

    矩阵数据集,可以使numpy数组,如果是pandas的数据框dataframe,则df的index/column信息会分别对应到heatmap的columns和rows。
    
  • linewidths:

    热力图矩阵之间的间隔大小。 vmax,vmin:
    
    图例中最大值和最小值的显示值,没有该参数时默认不显示。
    

11.6 饼状图

from pylab import *
import numpy as np

n = 20
# 生成随机的下一个实数,在[0,1]范围内。
Z = np.random.uniform(0,1,n)
pie(Z,explode=Z*0.5)
show()

在这里插入图片描述

plt.pie(x, labels= …):

属性说明类型
x数据list
labels标签list
autopct数据标签%0.1%%保留一位小数
explode突出的部分list
shadow是否显示阴影bool
pctdistance数据标签距离圆心的位置0-1
labeldistance标签的比例float
startangle开始绘图的角度float
radius半径长默认是1

11.7 量场图

from pylab import *
import numpy as np

n = 8
X,Y = np.mgrid[0:n,0:n]
quiver(X,Y)
show()

在这里插入图片描述

11.8 网格

from pylab import *
import numpy as np

ax = axes([0.025,0.025,0.95,0.95])
ax.set_xlim(0,4)
ax.set_ylim(0,3)
ax.xaxis.set_major_locator(MultipleLocator(1.0))
ax.xaxis.set_minor_locator(MultipleLocator(0.1))
ax.yaxis.set_major_locator(MultipleLocator(1.0))
ax.yaxis.set_minor_locator(MultipleLocator(0.1))
ax.grid(which='major', axis='x', linewidth=0.75, linestyle='-', color='0.75')
ax.grid(which='minor', axis='x', linewidth=0.25, linestyle='-', color='0.75')
ax.grid(which='major', axis='y', linewidth=0.75, linestyle='-', color='0.75')
ax.grid(which='minor', axis='y', linewidth=0.25, linestyle='-', color='0.75')
ax.set_xticklabels([])
ax.set_yticklabels([])

show()

在这里插入图片描述

11.9 极轴图

from pylab import *
import numpy as np

# axes
axes([0,0,1,1],polar=True)

N = 20
theta = np.arange(0.0,2*np.pi,2*np.pi/N)
radii = 10*np.random.rand(N)
width = np.pi/4*np.random.rand(N)
bars = bar(theta,radii,width=width,bottom=0.0)

for r,bar in zip(radii,bars):
    bar.set_facecolor(cm.jet(r/10.0))
    bar.set_alpha(0.5)
    
show()

在这里插入图片描述

11.10 3D图

%matplotlib inline
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)
R = np.sqrt(X**2+Y**2)
Z = np.sin(R)
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='jet')
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='jet')
ax.set_zlim(-2,2)
plt.show()

在这里插入图片描述

11.11 手稿图

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

eqs = []
eqs.append((r"$W^{3\beta}_{\delta_1 \rho_1 \sigma_2} = U^{3\beta}_{\delta_1 \rho_1} + \frac{1}{8 \pi 2} \int^{\alpha_2}_{\alpha_2} d \alpha^\prime_2 \left[\frac{ U^{2\beta}_{\delta_1 \rho_1} - \alpha^\prime_2U^{1\beta}_{\rho_1 \sigma_2} }{U^{0\beta}_{\rho_1 \sigma_2}}\right]$"))
eqs.append((r"$\frac{d\rho}{d t} + \rho \vec{v}\cdot\nabla\vec{v} = -\nabla p + \mu\nabla^2 \vec{v} + \rho \vec{g}$"))
eqs.append((r"$\int_{-\infty}^\infty e^{-x^2}dx=\sqrt{\pi}$"))
eqs.append((r"$E = mc^2 = \sqrt{{m_0}^2c^4 + p^2c^2}$"))
eqs.append((r"$F_G = G\frac{m_1m_2}{r^2}$"))


plt.axes([0.025,0.025,0.95,0.95])

for i in range(24):
    index = np.random.randint(0,len(eqs))
    eq = eqs[index]
    size = np.random.uniform(12,32)
    x,y = np.random.uniform(0,1,2)
    alpha = np.random.uniform(0.25,.75)
    plt.text(x, y, eq, ha='center', va='center', color="#11557c", alpha=alpha,
             transform=plt.gca().transAxes, fontsize=size, clip_on=True)

plt.xticks([]), plt.yticks([])
# savefig('../figures/text_ex.png',dpi=48)
plt.show()

在这里插入图片描述

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值