Matplotlib 常见图

plot 折线图

plot(*args, scalex=True, scaley=True, data=None, **kwargs)

参数说明:

  • x,y:分别表示所有点的x坐标和y坐标。y和x可以满足某种函数关系,属于*args中的参数

  • linestyle:线型,属于**kwargs中的参数

  • color:线颜色,属于**kwargs中的参数

  • marker:点形状,属于**kwargs中的参数

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10,10,40)
y1,y2 = x / 2, x**2

fig = plt.figure() #创建figure对象
ax = fig.add_axes([0.1,0.1,0.8,0.8]) #添加坐标轴对象
ax.plot(x,y1,color='r',marker="o")  #在坐标轴对象上进行绘图
ax.plot(x,y2,linestyle="-.",color='b',marker="v")
plt.show()

bar 条形图

bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

参数说明:

  • x:柱形的横坐标

  • y:对应柱形的高度

  • width:柱形的宽度

  • color:柱形的颜色

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1,7)
y1,y2 = [20,40,10,50,60,80],[30,20,60,50,80,65]
barwidth = 0.3

fig = plt.figure() #创建figure对象
ax = fig.add_axes([0.1,0.1,0.8,0.8]) #添加坐标轴对象
ax.bar(x,y1,width=barwidth)  #在坐标轴对象上进行绘图
ax.bar(x + barwidth,y2,width=barwidth)
plt.show()

barh 水平条形图

barh(y, width, height=0.8, left=None, *, align='center', **kwargs)

参数说明:

  • y:每个柱形的y坐标

  • width:每个柱形的水平长度

import matplotlib.pyplot as plt
import numpy as np

y = np.arange(1,7)
x1,x2 = [20,40,10,50,60,80],[30,20,60,50,80,65]
barheight = 0.3

fig = plt.figure() #创建figure对象
ax = fig.add_axes([0.1,0.1,0.8,0.8]) #添加坐标轴对象
ax.barh(y,x1,height=barheight)  #在坐标轴对象上进行绘图
ax.barh(y + barheight,x2,height=barheight)
plt.show()

hist 直方图

hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs)
import matplotlib.pyplot as plt
import numpy as np

sigma = 1   #标准差
mean = 0    #均值
x=mean+sigma*np.random.randn(10000)   #正态分布随机数

fig,(ax0,ax1) = plt.subplots(nrows=2,figsize=(9,6))     #在窗口上添加2个子图
ax1.hist(x,bins=40,normed=False,histtype='bar',facecolor='yellowgreen',alpha=0.75)   #normed是否归一化,histtype直方图类型,facecolor颜色,alpha透明度
ax2.hist(x,bins=20,normed=1,histtype='bar',facecolor='pink',alpha=0.75,cumulative=True,rwidth=0.8) #bins柱子的个数,cumulative是否计算累加分布,rwidth柱子宽度
plt.show()  #所有窗口运行

pie 饼状图

pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center=(0,0), frame=False, rotatelabels=False, *, data=None)

参数说明:

  • x:每个扇形所占的比重,可以传入原始数据它会自动帮我们计算出各自所占的比重

  • labels:每个扇形的标签,需要按x中的顺序传入标签数组

  • explode:扇形顶点离饼中心的距离(用来进行突出显示用的),同样需要按x中的顺序传入对应的数组

  • shadow:是否在饼图下绘制阴影

  • atuopct:饼图内百分比显示样式控制,例如%1.2f%%表示保留两位小数点且增加百分号

import matplotlib.pyplot as plt
import numpy as np

x = [28,16,10,9,37]
labels=["华东地区","华南地区","华北地区","其他","港澳台及海外地区"]
explode = [0,0,0,0,0.05]

fig = plt.figure() #创建figure对象
ax = fig.add_axes([0.1,0.1,0.8,0.8]) #添加坐标轴对象
ax.pie(x,labels=labels,explode=explode,autopct=r"%1.0f%%")  #在坐标轴对象上进行绘图
plt.show()

scatter 散点图

scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)
  • x,y:分别代表点的横纵坐标

  • s:点大小

  • c:点颜色

  • alpha:透明度,值在0~1之间,0代表透明,1代表不透明

  • marker:点形状

import matplotlib.pyplot as plt
import numpy as np

x = np.random.normal(1,10,40)
y = np.random.normal(1,10,40)

fig = plt.figure() #创建figure对象
ax = fig.add_axes([0.1,0.1,0.8,0.8]) #添加坐标轴对象
ax.scatter(x,y,marker="*")
plt.show()

polar 极坐标图

polar(*args, **kwargs)
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()                                #新开一个窗口
ax1 = fig.add_subplot(1,2,1,polar=True)                  #启动一个极坐标子图
theta=np.arange(0,2*np.pi,0.02)              #角度数列值
ax1.plot(theta,2*np.ones_like(theta),lw=2)   #画图,参数:角度,半径,lw线宽
ax1.plot(theta,theta/6,linestyle='--',lw=2)           #画图,参数:角度,半径,linestyle样式,lw线宽

ax2 = fig.add_subplot(1,2,2,polar=True)                  #启动一个极坐标子图
ax2.plot(theta,np.cos(5*theta),linestyle='--',lw=2)
ax2.plot(theta,2*np.cos(4*theta),lw=2)

ax2.set_rgrids(np.arange(0.2,2,0.2),angle=45)   #距离网格轴,轴线刻度和显示位置
ax2.set_thetagrids([0,45,90])                   #角度网格轴,范围0-360度

plt.show()

最后更新于