网站备案扫描,江苏中兴建设有限公司网站,wordpress插图插件,做网站备案哪些条件文章目录 一、matplotlib库的作用与环境配置1、环境配置示例2、改变绘图风格3、保存图片 二、绘制二维图形1、折线图#xff08;1#xff09;示例#xff08;2#xff09;调整线条颜色#xff1a;#xff08;3#xff09;调整线条风格#xff08;4#xff09;调整线宽… 文章目录 一、matplotlib库的作用与环境配置1、环境配置示例2、改变绘图风格3、保存图片 二、绘制二维图形1、折线图1示例2调整线条颜色3调整线条风格4调整线宽5调整数据点标记6颜色和风格设置的简写7调整坐标轴8设置图形标签9设置图例10添加文字和箭头 2、散点图1示例2颜色设置3根据数据控制点的大小4透明度 3、柱形图1简单柱形图2累加柱形图3并列柱形图4横向柱形图 4、多子图1简单多子图2多行多列子图3不规则多子图 5、直方图1普通频次直方图2概率密度3累计概率分布4例模拟两个骰子 6、误差图1基本误差图2柱形图误差图 三、面相对象的风格简介1、普通图2、画中画3、多子图 四、三维图形简介1、三维数据点与线2、三维数据曲面图 一、matplotlib库的作用与环境配置
matplotlib库是数据分析中数据可视化的一个重要工具。
1、环境配置示例
import matplotlib.pyplot as pltx [1,2,3,4]
y [1,4,9,16]plt.plot(x,y) # 绘制折线图
plt.ylabel(squares) # 设置y轴标签
plt.show() # 显示图片2、改变绘图风格
print(plt.style.available[:]) # 显示可用的绘图风格with plt.style.context(seaborn-white): # 临时改变绘图风格plt.show()import matplotlib.pyplot as plt
plt.style.use(seaborn-white) # 永久改变绘图风格x [1,2,3,4]
y [1,4,9,16]plt.plot(x,y) # 绘制折线图
plt.ylabel(squares) # 设置y轴标签
plt.show() # 显示图片3、保存图片
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,10,100)
plt.plot(x,np.exp(x))plt.savefig(myfigure.png) # 保存图片二、绘制二维图形
1、折线图
1示例
import matplotlib.pyplot as plt
import numpy as np
plt.style.use(seaborn-white)x np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x)) # 绘制正弦曲线
plt.plot(x,np.cos(x)) # 绘制余弦曲线plt.show()2调整线条颜色
import matplotlib.pyplot as plt
import numpy as np
plt.style.use(seaborn-white)x np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x)) # 绘制正弦曲线offsets np.linspace(0,np.pi,5)
colors [blue,g,r,yellow,pink]for offset,color in zip(offsets,colors):plt.plot(x,np.sin(x-offset),colorcolor) # 关键字color可缩写为cplt.show()3调整线条风格
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,10,11)
offsets list(range(8))
linestyles [solid,dashed,dashdot,dotted,-,--,-.,:]
for offset,linestyle in zip(offsets,linestyles):plt.plot(x,xoffset,linestylelinestyle) # linestyle可缩写为lsplt.show()4调整线宽
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,10,11)
offsets range(0,12,3)
linewidths (i*2 for i in range(1,5))
for offset,linewidth in zip(offsets,linewidths):plt.plot(x,xoffset,linewidthlinewidth) # linewidth可缩写为lwplt.show()5调整数据点标记
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,10,11)
offsets range(0,12,3)
markers [*,,o,s]
for offset,marker in zip(offsets,markers):plt.plot(x,xoffset,markermarker,markersize10) # markersize可缩写为msplt.show()6颜色和风格设置的简写
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,10,11)
offsets range(0,8,2)
color_linestyles [g-,c--,k-.,r:]
for offset,color_linestyle in zip(offsets,color_linestyles):plt.plot(x,xoffset,color_linestyle)plt.show()import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,10,11)
offsets range(0,8,2)
cmls [g*-,b--,ko-.,rs:]
for offset,cml in zip(offsets,cmls):plt.plot(x,xoffset,cml)plt.show()其他用法及颜色缩写、数据点标记缩写等请查看官方文档如下 https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.plot.html
7调整坐标轴
x轴、y轴的边界
x np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x))
plt.xlim(-1,7)
plt.ylim(-1.5,1.5)
plt.show()x np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x))
plt.axis([-2,8,-2,2]) #设置x轴的边界为-2到8y轴为-2到2
plt.show()x np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x))
plt.axis(tight)
plt.show()x np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x))
plt.axis(equal)
plt.show()help(plt.axis) 可以查询 plt.axis() 中还可以设置哪些字符串参数。
对数坐标
import matplotlib.pyplot as plt
import numpy as np
import math
x np.logspace(0,5,6) #10**0到10**5的等比数列取6个数plt.plot(x,np.log(x),markero) # np.log(x)表示以e为底求x的对数
plt.xscale(log) # 表示x轴的刻度设置为对数刻度
plt.show()调整坐标轴刻度
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,10,100)
plt.plot(x,x**2)
plt.xticks(np.arange(0,12,step1),fontsize15)
plt.yticks(np.arange(0,100,step10))plt.show()调整刻度样式
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,10,100)
plt.plot(x,x**2)
plt.tick_params(axisboth,labelsize15)plt.show()8设置图形标签
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x))
plt.title(A Sine Curve,fontsize20)
plt.xlabel(x,fontsize15)
plt.ylabel(sin(x),fontsize15)plt.show()9设置图例
默认
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x),b-,labelSin)
plt.plot(x,np.cos(x),r--,labelCos)
plt.legend()
plt.show()修饰图例
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x),b-,labelSin)
plt.plot(x,np.cos(x),r--,labelCos)
plt.legend(locupper center,frameonFalse,fontsize15)
#loc supported values are best, upper right, upper left, lower left, lower right, right, center left, center right, lower center, upper center, center
plt.ylim(-1.5,2)
plt.show()10添加文字和箭头
添加文字
x np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x),b-)
plt.text(3.5,0.5,ysin(x),fontsize15) # 3.5,0.5为文字所在坐标
plt.show()添加箭头
x np.linspace(0,2*np.pi,100)
plt.plot(x,np.sin(x),b-)
plt.annotate(local min,xy(1.5*np.pi,-1),xytext(4.5,0),arrowpropsdict(facecolorblack,shrink0.1))
# xy(1.5*np.pi,-1) 指定了箭头指向的点的坐标。xytext(4.5,0) 指定了注释文本的位置。arrowpropsdict(facecolorblack,shrink0.1) 则设置了箭头的样式包括颜色和箭头的缩放。
plt.show()2、散点图
1示例
x np.linspace(0,2*np.pi,20)
plt.scatter(x,np.sin(x),markers,s30,cr) # s大小 c颜色plt.show()2颜色设置
x np.linspace(0, 10, 10)
y x ** 2
plt.scatter(x, y, cy, cmapBlues)
# cy散点的颜色根据y值的大小而变化
plt.colorbar()
plt.show()颜色配置参考官方文档 https://matplotlib.org/2.0.2/examples/color/colormaps_reference.html
3根据数据控制点的大小
x,y,colors,size (np.random.rand(100) for i in range(4))
plt.scatter(x,y,ccolors,s1000*size,cmapviridis)plt.colorbar()
plt.show()4透明度
x,y,colors,size (np.random.rand(100) for i in range(4))
plt.scatter(x,y,ccolors,s1000*size,cmapviridis,alpha0.3)plt.colorbar()
plt.show()3、柱形图
1简单柱形图
import numpy as np
import matplotlib.pyplot as pltx np.arange(1,6)
plt.bar(x,2*x,aligncenter,width0.5,alpha0.5,coloryellow,edgecolorred)
plt.xticks(x,(G1,G2,G3,G4,G5))
plt.tick_params(axisboth,labelsize13)plt.show()import numpy as np
import matplotlib.pyplot as pltx [Gstr(i) for i in range(5)]
y 1/(1np.exp(-np.arange(5)))
colors [red,yellow,blue,green,gray]
plt.bar(x,y,aligncenter,width0.5,alpha0.5,colorcolors)
plt.tick_params(axisboth,labelsize13)plt.show()2累加柱形图
import numpy as np
import matplotlib.pyplot as pltx np.arange(5)
y1 np.random.randint(20,30,size5)
y2 np.random.randint(20,30,size5)
plt.bar(x,y1,width0.5,labelman)
plt.bar(x,y2,width0.5,bottomy1,labelwoman)
plt.legend()
plt.show()3并列柱形图
import numpy as np
import matplotlib.pyplot as pltx np.arange(15)
y1 x1
y2 y1np.random.random(15)
plt.bar(x,y1,width0.3,labelman)
plt.bar(x0.3,y2,width0.3,labelwoman)
plt.legend()
plt.show()4横向柱形图
import numpy as np
import matplotlib.pyplot as pltx [Gstr(i) for i in range(1,6)]
y 2 * np.arange(1,6)
plt.barh(x,y,aligncenter,height0.5,alpha0.8,colorblue,edgecolorred)
plt.tick_params(axisboth,labelsize13)
plt.show()4、多子图
1简单多子图
import numpy as np
import matplotlib.pyplot as pltdef f(t):return np.exp(-t)*np.cos(2*np.pi*t)t1 np.arange(0.0,5.0,0.1)
t2 np.arange(0.0,5.0,0.2)plt.subplot(211) # 总共2行1列子图网格当前选中第1个子图
plt.plot(t1,f(t1),bo-,markerfacecolorr,markersize5)
plt.title(A tale of 2 subplots)
plt.ylabel(Damped oscillation)plt.subplot(212) # 总共2行1列子图网格当前选中第2个子图
plt.plot(t2,np.cos(2*np.pi*t2),r--)
plt.xlabel(time(s))
plt.ylabel(Undamped)plt.show()2多行多列子图
import numpy as np
import matplotlib.pyplot as pltx np.random.random(10)
y np.random.random(10)plt.subplots_adjust(hspace0.5,wspace0.3) # 调整子图之间的水平和垂直间距plt.subplot(321)
plt.scatter(x,y,s80,cb,marker)plt.subplot(322)
plt.scatter(x,y,s80,cg,marker*)plt.subplot(323)
plt.scatter(x,y,s80,cr,markers)plt.subplot(324)
plt.scatter(x,y,s80,cc,markerp)plt.subplot(325)
plt.scatter(x,y,s80,cm,marker)plt.subplot(326)
plt.scatter(x,y,s80,cy,markerH)plt.show()3不规则多子图
import matplotlib.pyplot as plt
import numpy as npdef f(x):return np.exp(-x) * np.cos(2*np.pi*x)x np.arange(0.0, 3.0, 0.01)
grid plt.GridSpec(2, 3, wspace0.4, hspace0.3)plt.subplot(grid[0, 0])
plt.plot(x, f(x))plt.subplot(grid[0, 1:])
plt.plot(x, f(x), r--, lw2)plt.subplot(grid[1, :])
plt.plot(x, f(x), g-, lw3)
plt.show()5、直方图
1普通频次直方图
import matplotlib.pyplot as plt
import numpy as npmu, sigma 100,15
x mu sigma * np.random.randn(1000)plt.hist(x, bins50, facecolorg, alpha0.75)plt.show()2概率密度
import matplotlib.pyplot as plt
import numpy as npmu, sigma 100,15
x mu sigma * np.random.randn(1000)plt.hist(x, 50, densityTrue, colorr)
plt.xlabel(Smarts)
plt.ylabel(Probability)
plt.title(Histogram of IQ)
plt.text(60, .025, r$\mu100,\ \sigma15$)
plt.xlim(40, 160)
plt.ylim(0, 0.03)plt.show()import matplotlib.pyplot as plt
import numpy as npmu, sigma 100,15
x mu sigma * np.random.randn(1000)plt.hist(x, 50, densityTrue, colorr, histtypestep)
plt.xlabel(Smarts)
plt.ylabel(Probability)
plt.title(Histogram of IQ)
plt.text(60, .025, r$\mu100,\ \sigma15$)
plt.xlim(40, 160)
plt.ylim(0, 0.03)plt.show()import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import normmu, sigma 100,15
x mu sigma * np.random.randn(10000)_, bins, __plt.hist(x, 50, densityTrue)
y norm.pdf(bins, mu, sigma)
plt.plot(bins, y, r--, lw3)
plt.xlabel(Smarts)
plt.ylabel(Probability)
plt.title(Histogram of IQ)
plt.text(60, .025, r$\mu100,\ \sigma15$)
plt.xlim(40, 160)
plt.ylim(0, 0.03)plt.show()3累计概率分布
import matplotlib.pyplot as plt
import numpy as npmu, sigma 100,15
x mu sigma * np.random.randn(10000)plt.hist(x, 50, densityTrue, cumulativeTrue, colorr)plt.xlabel(Smarts)
plt.ylabel(Probability)
plt.title(Histogram of IQ)
plt.text(60, 0.8, r$\mu100,\ \sigma15$)
plt.xlim(50, 165)
plt.ylim(0, 1.1)plt.show()4例模拟两个骰子
import matplotlib.pyplot as plt
import numpy as npclass Die():模拟一个骰子的类def __init__(self, num_sides6):self.num_sides num_sidesdef roll(self):return np.random.randint(1, self.num_sides1)# 重复投一个骰子
die Die()
results []
for i in range(60000):result die.roll()results.append(result)plt.hist(results, bins6, range(0.75, 6.75), alignmid, width0.5)
plt.xlim(0, 7)plt.show()# 重复投两个骰子
die1 Die()
die2 Die()
results []
for i in range(60000):result die1.roll() die2.roll()results.append(result)plt.hist(results, bins11, range(1.75, 12.75), alignmid, width0.5)
plt.xlim(0, 13)
plt.xticks(np.arange(1, 14))plt.show()# 重复投两个骰子
die1 Die()
die2 Die()
results []
for i in range(60000):result die1.roll() die2.roll()results.append(result)plt.hist(results, bins11, range(1.75, 12.75), densityTrue, alignmid, width0.5)
plt.xlim(0, 13)
plt.xticks(np.arange(1, 14))plt.show()6、误差图
1基本误差图
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0, 10, 50)
dy 0.5
y np.sin(x) dy*np.random.randn(50)plt.errorbar(x, y, yerrdy, fmtb)plt.show()2柱形图误差图
import matplotlib.pyplot as plt
import numpy as npmenMeans (20, 35, 30, 35, 27)
womenMeans (25, 32, 34, 20, 25)
menStd (2, 3, 4, 1, 2)
womenStd (3, 5, 2, 3, 3)
ind [G1, G2, G3, G4, G5]
width 0.35p1 plt.bar(ind, menMeans, widthwidth, labelMen, yerrmenStd)
p2 plt.bar(ind, womenMeans, widthwidth, bottommenMeans, labelWomen, yerrwomenStd)plt.ylabel(Scores)
plt.title(Scores by group and gender)
plt.yticks(np.arange(0, 81, 10))
plt.legend()
plt.show()三、面相对象的风格简介
1、普通图
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0, 5, 10)
y x ** 2fig plt.figure(figsize(8,4), dpi80) # 设置画布对象
axes fig.add_axes([0.1, 0.1, 0.8, 0.8]) # 设置轴 [left,bottom,width,height]与画布的比例
axes.plot(x, y, r)
axes.set_xlabel(x)
axes.set_ylabel(y)
axes.set_title(title)
plt.show()2、画中画
import matplotlib.pyplot as plt
import numpy as npx np.linspace(0, 5, 10)
y x ** 2fig plt.figure()
ax1 fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax2 fig.add_axes([0.2, 0.5, 0.4, 0.3])ax1.plot(x, y, r)ax1.set_xlabel(x)
ax1.set_ylabel(y)
ax1.set_title(title)ax2.plot(y, x, g)
ax2.set_xlabel(y)
ax2.set_ylabel(x)
ax2.set_title(insert title)plt.savefig(1.png)
plt.show()3、多子图
import matplotlib.pyplot as plt
import numpy as npdef f(t):return np.exp(-t) * np.cos(2*np.pi*t)t1 np.arange(0.0, 3.0, 0.01)fig plt.figure()
fig.subplots_adjust(hspace0.4, wspace0.4)ax1 plt.subplot(2, 2, 1)
ax1.plot(t1, f(t1))
ax1.set_title(Upper left)ax2 plt.subplot(2, 2, 2)
ax2.plot(t1, f(t1))
ax2.set_title(Upper right)ax3 plt.subplot(2, 1, 2)
ax3.plot(t1, f(t1))
ax3.set_title(Lower)plt.savefig(1.png)
plt.show()四、三维图形简介
1、三维数据点与线
import matplotlib.pyplot as plt
import numpy as npax plt.axes(projection3d)
zline np.linspace(0, 15, 1000)
xline np.sin(zline)
yline np.cos(zline)
ax.plot3D(xline, yline, zline)zdata 15*np.random.random(100)
xdata np.sin(zdata)
ydata np.cos(zdata)ax.scatter3D(xdata, ydata, zdata, czdata, cmapspring)plt.savefig(1.png)
plt.show()2、三维数据曲面图
import matplotlib.pyplot as plt
import numpy as npdef f(x, y):return np.sin(np.sqrt(x**2 y**2))x np.linspace(-6, 6, 30)
y np.linspace(-6, 6, 30)
X, Y np.meshgrid(x, y)
Z f(X, Y)ax plt.axes(projection3d)
ax.plot_surface(X, Y, Z, cmapviridis)plt.savefig(1.png)
plt.show()