Matplotlib_2

Posted 被褐怀玉888988

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib_2相关的知识,希望对你有一定的参考价值。

1.实现柱状图

1.实现柱状图:plt.bar(x的坐标,y的坐标,facecolor=“主体颜色”,edgecolor=“边框颜色”)实现柱状图

import numpy as np
import matplotlib.pyplot as plt

n=12
X=np.arange(n)
Y=np.random.uniform(0.5,1,n)

plt.bar(X,Y,facecolor="r",edgecolor="b")
plt.show()

在这里插入图片描述
2.显示柱状图的相关参数
先用zip()打包x,y坐标,在运用Matplotlib_1中有关标注plt.text的相关知识显示相关参数,有关前文补充:ha表示水平位置,va表示竖直位置

import numpy as np
import matplotlib.pyplot as plt

n=12
X=np.arange(n)
Y=np.random.uniform(0.5,1,n)

plt.bar(X,Y,facecolor="r",edgecolor="b")

for x,y in zip(X,Y):
    plt.text(x+0.1,y+0.01,'%.2f'%y,ha="center",va="bottom")

plt.show()

在这里插入图片描述

2.实现等高线

1.运用plt.contour(X的坐标数组,Y的坐标数组,Z的坐标数组,分成份数,color=“颜色”,linewidth=线宽)可画出等高线

import matplotlib.pyplot as plt
import numpy as np

def f(x,y):
    return x*y

n=256
x=np.linspace(-3,3,n)
y=np.linspace(-3,3,n)
X,Y=np.meshgrid(x,y)
plt.contour(X,Y,f(X,Y),8,colors="black",linewidths=0.5)

plt.show()

在这里插入图片描述

2.运用plt.contourf(X的坐标数组,Y的坐标数组,Z的坐标数组,分成份数,alpha=透明度,cmap=plt.cm.hot(颜色为热色调))可画出等高面

import matplotlib.pyplot as plt
import numpy as np

def f(x,y):
    return x*y

n=256
x=np.linspace(-3,3,n)
y=np.linspace(-3,3,n)
X,Y=np.meshgrid(x,y)
plt.contourf(X,Y,f(X,Y),8,alpha=1,cmap=plt.cm.hot)

plt.show()

在这里插入图片描述
3.可用plt.clabel(坐标名,inline=是否在线里boolen值,fontsize=字大小)

import matplotlib.pyplot as plt
import numpy as np

def f(x,y):
    return x*y

n=256
x=np.linspace(-3,3,n)
y=np.linspace(-3,3,n)
X,Y=np.meshgrid(x,y)
C=plt.contour(X,Y,f(X,Y),8,colors="black",linewidths=0.5)
plt.clabel(C,inline=True,fontsize=10)

plt.show()

在这里插入图片描述
4.结合一下可得

import matplotlib.pyplot as plt
import numpy as np

def f(x,y):
    return x*y

n=256
x=np.linspace(-3,3,n)
y=np.linspace(-3,3,n)
X,Y=np.meshgrid(x,y)
plt.contourf(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot)
C=plt.contour(X,Y,f(X,Y),8,colors="black",linewidths=0.5)
plt.clabel(C,inline=True,fontsize=10)

plt.show()

在这里插入图片描述

3.画图

1.可用plt.imshow(数组,interpolation="",cmap=“色调”,origin=“upper or lower”)实现画图

import matplotlib.pyplot as plt
import numpy as np

a=np.random.random((3,3))
plt.imshow(a,interpolation="None",cmap="hot",origin="lower")

plt.show()

在这里插入图片描述

cmap的参数如下:
Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu(绿到蓝), GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd(橘色到红色), OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia(蓝绿黄), Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd(红橙黄), YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cividis, cividis_r, cool, cool_r, coolwarm(蓝到红), coolwarm_r, copper(铜色), copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r(红黄), hsv, hsv_r, icefire, icefire_r, inferno, inferno_r, jet, jet_r, magma, magma_r, mako, mako_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, rocket, rocket_r, seismic, seismic_r, spring, spring_r, summer (黄到绿), summer_r (绿到黄), tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, twilight, twilight_r, twilight_shifted, twilight_shifted_r, viridis, viridis_r, vlag, vlag_r, winter, winter_r

2.plt.colorbar()可显示标注

import matplotlib.pyplot as plt
import numpy as np

a=np.random.random((3,3))
plt.imshow(a,interpolation="None",cmap="hot",origin="lower")
plt.colorbar()

plt.show()

在这里插入图片描述

4.绘制3D图像

1.绘制3D图像需要 from mpl_toolkits.mplot3d import Axes3D

2.通过fig=plt.figure() ax=Axes3D(fig)两行代码画出空间直角坐标系

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

fig=plt.figure()
ax=Axes3D(fig)
plt.show()

在这里插入图片描述
3.绘制线条用ax.plot_wireframe(X,Y,Z,rstride=行宽,cstride=列宽,color=‘颜色’)

import numpy as np
from matplotlib import pyplot as plt
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)
Z=X*Y
ax.plot_wireframe(X,Y,Z,rstride=1,cstride=1,color='r')
plt.show()

在这里插入图片描述
4.ax.plot_surface(X,Y,Z,rstride=行宽,cstride=列宽,cmap=‘相关参数’)

import numpy as np
from matplotlib import pyplot as plt
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)
Z=X*Y
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='rainbow')
plt.show()

在这里插入图片描述

5.在3D图像中绘等高线

plt.contourf(X,Y,Z,zdir=‘投影平面’,offset=投影位置,cmap=‘相关参数’)

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

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

X=np.arange(-4,4,0.05)
Y=np.arange(-4,4,0.05)
X,Y=np.meshgrid(X,Y)
Z = X*Y
plt.contourf(X,Y,Z,zdir='z',offset=-2,cmap='hot')
plt.show()

在这里插入图片描述

以上是关于Matplotlib_2的主要内容,如果未能解决你的问题,请参考以下文章

在子图 Matplotlib 中按列表添加图例

VSCode 配置 用户自定义代码片段 自定义自动代码补充

实时matplotlib图在循环中不起作用[重复]

matplotlib的一些代码

在 matplotlib 内联和 QT 后端之间切换 Python 脚本

如何将csv数据加载到matplotlib?