0
点赞
收藏
分享

微信扫一扫

使用matplotlib绘制简单图表

九月的栩 2022-03-11 阅读 70

1.面积堆积图

语法格式:
stackplot(x,y, labels=(),baseline='zero',data=None,*args,**kwargs)
 •x :表示x轴的数据,可以是一维数组。
• y:表示y轴的数据,可以是二维数组或一维数组序列。
• labels:表示每组折线及填充区域的标签。
•baseline :表示计算基线的方法,包括 'zero'、'sym'、'wiggle' 和'weighted_ wiggle'。其中,
'zero'表示恒定零基线,即简单的堆积图;'sym'表示对称于零基线;'wiggle'表示最小化平方斜率的总
和;'weighted_ wiggle' 表示执行相同的操作,但权重用于说明每层的大小。

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(6)
y1 = np.array([1,4,3,5,6,7])
y2 = np.array([1,3,4,2,7,6])
y3 = np.array([3,4,3,6,5,5])
plt.title('2020080603011')
plt.stackplot(x,y1,y2,y3)
plt.show()

在这里插入图片描述

2.直方图

语法格式:
hist (x, bins=None,range=None,density=None, weights=None,cumulative=False, bottom=None,
histtype='bar',align='mid',orientation='vertical',rwidth=None, log=False,label=None,stacked=False,
normed=None, *,data=None, **kwargs)
该函数常用参数的含义如下。
• x:表示x轴的数据,可以为单个数组或多个数组的序列
• bins:表示矩形条的个数,默认为 10。
•range:表示数据的范围。若没有提供range参数的值,则数据范围为 (x.min(), x.max())。
• cumulative:表示是否计算累计频数或频率。
• histtype:表示直方图的类型,支持'bar'、barstacked'、'step'、'stepfilled' 四种取值,其中
'bar'为默认值,代表传統的直方图:'barstacked' 代表堆积直方图;'step'代表未填充的线条直方图;
stepfalled代表填充的线条直方图。
• align:表示矩形条边界的对齐方式,可设置为'left'、mid 或'right',款认为'mid'。
• orientation:表示矩形条的摆放方式,默认为 'vertical',即垂直方向。
• rwidth:表示矩形条宽度的百分比,默认为0。若histtype 的值为'step’ 或'stepfilled',则
直接忽略rwidth 参数的值。
•stacked:表示是否将多个矩形条以堆积形式摆放。
scores = np.random.randint(0,100,50)
plt.title('2020080603011')
plt.hist(scores,bins=8,histtype='stepfilled')
plt.show()

在这里插入图片描述

random_state = np.random.RandomState(19680801)
random_x = random_state.randn(10000)
plt.title('2020080603011')
plt.hist(random_x,bins=100)
plt.show()

在这里插入图片描述

3.饼图或圆环图

语法格式:
ple(x,explode=None,Labels=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:表示扇形或楔形的数据。
• explode:表示扇形或楔形离开圆心的距离
• labels:表示扇形或楔形对应的标签文本。
• autopct :表示控制扇形或楔形的数值显示的字符串,可通过格式字符串指定小数点后的位数。
• pctdistance:表示扇形或楔形对应的数值标签距离圆心的比例,默认为 0.6。
•shadow:表示是否显示阴影。
• labeldistance :表示标签文本的绘制位置(相对于半径的比例),默认为1.1。
• startangle:表示起始绘制角度,默认从x轴的正方向逆时针绘制。
• radius:表示扇形或楔形的半径。
• weageprops :表示控制扇形或楔形属性的宇典。例如,通过 wedgeprops ={'width':0.7} 支付,
将楔形的宽度设为 0.7。
• textprops:表示控制图表中文本属性的字典。
• center :表示图表的中心点位置,默认为(0,0)。
• frame:表示是否显示图框。
data = np.array([20,50,10,15,30,55])
pie_labels = np.array(['A','B','C','D','E','F'])
plt.title('2020080603011')
plt.pie(data,radius=1.5,labels=pie_labels,autopct='%.1f%%')
plt.show()

在这里插入图片描述

plt.title('2020080603011')
plt.pie(data,radius=1.5,wedgeprops={'width':0.5},labels=pie_labels,autopct='%.1f%%',pctdistance=0.55)
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
kinds = ['购物','人情来往','餐饮美食','通信物流','生活日用','交通出行','休闲娱乐','其他']
money_scale = [800 / 3000, 100 / 3000, 1000 / 3000, 200 / 3000, 300 / 3000, 200 / 3000, 200 / 3000, 200 / 3000]
dev_position = [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]
plt.title('2020080603011')
plt.pie(money_scale,labels=kinds,autopct='%.1f%%',shadow=True,explode=dev_position,startangle=180)
plt.show()

在这里插入图片描述

4.散点图或气泡图

语法格式:
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, *,plotnonfinite=False,data=None, **kwargs)
该两数常用参数的含义如下
• ×,y:表示数据点的位置。
• s:表示数据点的大小。
• c:表示数据,点的颜色。
• marker :表示数据点的样式,默认为圆形。
•cmap:表示数据点的颜色映射表,仅当参数c为浮点数组时才使用。
• norm:表示数据亮度,可以取值为 0~ 1。
• vmin, vmax:表示亮度的最小值和最大值。若传人了norm委数,则忽略vmin和vmax 参数。
• alpha:表示透明度,可以取值为 0~ 1。
• linewidths:表示数据点边缘的宽度。
•edgecolors :表示数据点边缘的颜色。
num = 50
x = np.random.rand(num)
y = np.random.rand(num)
plt.title('2020080603011')
plt.scatter(x,y)
plt.show()

在这里插入图片描述

area = (30 * np.random.rand(num))**2
plt.title('2020080603011')
plt.scatter(x,y,s=area)
plt.show()

在这里插入图片描述

x_speed = np.arange(10,210,10)
y_distance = np.array([0.5,2.0,4.4,7.9,12.3,17.7,24.1,31.5,39.9,49.2,59.5,70.8,83.1,96.4,110.7,126.0,142.2,159.4,177.6,196.8])
plt.title('2020080603011')
plt.scatter(x_speed,y_distance,s=50,alpha=0.9)
plt.show()

在这里插入图片描述

5.箱型图

语法格式:
boxplot(x, notch=None, sym=None, vert=None,whis=None,positions=None,
widths=None, patch_artist=None, bootstrap=None, usermedians=None,
conf_ intervals=None,meanline=None,showmeans=None,showcaps=None,
showbox=None,showfliers=None, boxprops=None, labels=None,
flierprops=None, medianprops=None, meanprops=None,capprops=None,
whiskerprops=None,manage_ticks=True,autorange=False,zorder=None, *,
data=None)
该函数常用参数的含义如下
• x:绘制箱形图的数据。
• sym:表示异常值对应的符号,默认为空心圆圈。
• vert:表示是否将箱形图垂直摆放,默认为垂直摆放。
• whis:表示箱形图上下须与上下四分位的距离,默认为 1.5 倍的四分位差。
• positions :表示箱体的位置。
• widths :表示箱体的宽度,默认为 0.5。
• patch_artist :表示是否填充箱体的颜色,默认不填充。
• meanline :是否用横跨箱体的线条标出中位数,默认不使用
• showcaps:表示是否显示箱体顶部和底部的横线,默认显示。
• showbox:表示是否显示箱形图的箱体,默认显示
• showfiers :表示是否显示异常值,默认显示。
• labels:表示箱形图的标签。
• boxprops :表示控制箱体属性的字典
date = np.random.randn(100)
plt.title('2020080603011')
plt.boxplot(date,meanline=True,widths=0.3,patch_artist=False,showfliers=False)
plt.show()

在这里插入图片描述

date_2018 = np.array([5200,5254.5,5283.4,5107.8,5443.3,5550.6,6400.2,6404.9,5483.1,5330.2,5543,6199.9])
date_2017 = np.array([4605.2,4710.3,5168.9,4767.2,4947,5203,6047.4,5945.5,5219.6,5038.1,5196.3,5689.6])
plt.title('2020080603011')
plt.boxplot([date_2017,date_2018],labels=('2017年','2018年'),meanline=True,widths=0.5,vert=False,patch_artist=True)
plt.show()

在这里插入图片描述

6.雷达图

语法格式:
polar(theta , r, **kwargs)
• theta:表示每个数据点所在射线与极径的夹角。
• r:表示每个数据点到原点的距离。
dim_num = 6
da = np.array([[0.40,0.32,0.35,0.30,0.30,0.88],
             [0.85,0.35,0.30,0.40,0.40,0.30],
             [0.43,0.89,0.30,0.28,0.22,0.30],
             [0.30,0.25,0.48,0.85,0.45,0.40],
             [0.20,0.38,0.87,0.45,0.32,0.28],
             [0.34,0.31,0.38,0.40,0.92,0.28]])
angles = np.linspace(0,2 * np.pi,dim_num,endpoint=False)
angles = np.concatenate((angles,[angles[0]]))
da = np.concatenate((da,[da[0]]))
radar_labels = ['研究型(I)','艺术型(A)','社会型(S)','企业型(E)','传统型(C)','现实型(R)']
radar_labels = np.concatenate((radar_labels,[radar_labels[0]]))

plt.polar(angles,da)
plt.thetagrids(angles * 180/np.pi,labels=radar_labels)
plt.fill(angles,da,alpha=0.25)
plt.title('2020080603011')
plt.show()

在这里插入图片描述
7.误差棒图

语法格式:
errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, 
barsabove=False, lolims=False, uplims=False, xlolims=False,xuplims=False, errorevery=1,
capthick=None, *, data=None, **kwargs)
• x,y:表示数据点的位置。
• xerr,yerr:表示数据的误差范围。
• fmt:表示数据点的标记样式和数据点之间连接线的样式。
• ecolor:表示误差棒的线条颜色。
• elinewidth:表示误差棒的线条宽度。
• capsize:表示误差棒边界横杆的大小。
• capthick:表示误差棒边界横杆的厚度。
x = np.arange(5)
y = (25,32,34,20,25)
y_offset = (3,5,2,3,3)
plt.errorbar(x,y,yerr=y_offset,capsize=3 ,capthick=2)
plt.title('2020080603011')
plt.show()

在这里插入图片描述

x = np.arange(3)
y1 = np.array([2.04,1.57,1.63])
y2 = np.array([1.69,1.61,1.64])
y3 = np.array([4.65,4.99,4.94])
y4 = np.array([3.39,2.33,4.10])
error1 = [0.16,0.08,0.10]
error2 = [0.27,0.14,0.14]
error3 = [0.34,0.32,0.29]
error4 = [0.23,0.23,0.39]
bar_width = 0.2
plt.bar(x,y1,bar_width)
plt.bar(x + bar_width,y2,bar_width,align="center",tick_label=["春季","夏季","秋季"])
plt.bar(x + 2*bar_width,y3,bar_width)
plt.bar(x + 3*bar_width,y4,bar_width)
plt.errorbar(x,y1,yerr=error1,capsize=3,elinewidth=2,fmt='k,')
plt.errorbar(x + bar_width,y2,yerr=error2,capsize=3,elinewidth=2,fmt='k,')
plt.errorbar(x + 2*bar_width,y3,yerr=error3,capsize=3,elinewidth=2,fmt='k,')
plt.errorbar(x + 3*bar_width,y4,yerr=error4,capsize=3,elinewidth=2,fmt='k,')
plt.title('2020080603011')
plt.show()

在这里插入图片描述

举报

相关推荐

0 条评论