1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matplotlib绘制直方图 饼图 散点图 气泡图 箱型图 雷达图

matplotlib绘制直方图 饼图 散点图 气泡图 箱型图 雷达图

时间:2020-11-05 14:38:07

相关推荐

matplotlib绘制直方图 饼图 散点图 气泡图 箱型图 雷达图

matplotlib绘制直方图,饼图,散点图,气泡图,箱型图,雷达图

一.直方图用10000个正态分布随机数画直方图二.绘制饼图或者圆环图圆环图根据消费支出画圆环图三.绘制散点图或气泡图使用scatter()函数绘制一个散点图,代码如下气泡图汽车速度与制动距离的关系四.绘制箱型图实例: 年和 年全国发电量统计四.使用polar函数绘制雷达图实例分析:霍兰德职业兴趣测试

更多文章:

matplotlib的参数配置:/TiI79

Matplotlib绘制折线图,条形图,柱状图,面积图/LMO2I

一.直方图

使用 pyplot 的 hist() 函数可以快速绘制直方图,hist() 函数的语法格式如下所示:

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’ 代表未填充的线条直 方图 ;‘stepfilled’ 代表填充的线条直方图。align :表示矩形条边界的对齐方式,可设置为 ‘left’、‘mid’ 或 ‘right’,默认为 ‘mid’。orientation :表示矩形条的摆放方式,默认为 ‘vertical’,即垂直方向。 ·rwidth :表示矩形条宽度的百分比,默认为 0。若 histtype 的值为 ‘step’ 或 ‘stepfilled’,则 直接忽略 rwidth 参数的值。stacked :表示是否将多个矩形条以堆积形式摆放。

简单示例

import numpy as npimport matplotlib.pyplot as plt# 准备 50 个随机测试数据scores = np.random.randint(0,100,50)#0到100之间50个随机整数print(scores)# 绘制直方图plt.hist(scores, bins=9, histtype='stepfilled')plt.show()

用10000个正态分布随机数画直方图

import matplotlib.pyplot as pltimport numpy as np# 10000 个随机数random_x = random_state.randn(10000)# 绘制包含 25 个矩形条的直方图plt.hist(random_x, bins=25)plt.show()

二.绘制饼图或者圆环图

使用 pyplot 的 pie() 函数可以快速地绘制饼图或圆环图,pie() 函数的语法格式如下所示 :

pie(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.6shadow :表示是否显示阴影。labeldistance :表示标签文本的绘制位置(相对于半径的比例),默认为1.1。startangle :表示起始绘制角度,默认从x轴的正方向逆时针绘制。radius :表示扇形或楔形的半径。wedgeprops :表示控制扇形或楔形属性的字典。例如,通过wedgeprops = {‘width’: 0.7}将楔形的宽度设为0.7。textprops :表示控制图表中文本属性的字典。· center :表示图表的中心点位置,默认为(0,0 )。· frame :表示是否显示图框。

示例代码:

import numpy as npimport matplotlib.pyplot as pltdata = np.array([20, 50, 10, 15, 30, 55])pie_labels = np.array(['A', 'B', 'C', 'D', 'E', 'F'])# 绘制饼图 : 半径为 1.5, 数值保留 1 位小数plt.pie(data, radius=1.5, labels=pie_labels, autopct='%3.1f%%')plt.show()

圆环图

import numpy as npimport matplotlib.pyplot as pltdata = np.array([20, 50, 10, 15, 30, 55])pie_labels = np.array(['A', 'B', 'C', 'D', 'E', 'F'])# 绘制圆环图 : 外圆半径为 1.5, 楔形宽度为 0.7plt.pie(data, radius=1.5, wedgeprops={'width': 0.8}, labels=pie_labels,autopct='%3.1f%%', pctdistance=0.75)plt.show()

根据消费支出画圆环图

数据如下:

# 显示中文plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseimport matplotlib.pyplot as pltimport numpy as npplt.figure(figsize=(10,6.5))x=np.array([800,100,1000,200,300,200,200,200])dev_pisition=np.full_like(x,0.1,dtype=float)#注意这里后面加上dtype,要不然dtype就取整变成0了label=["购物",'人情往来','餐饮美食','通信物流','生活日用','交通出行','休闲娱乐','其他']plt.pie(x,radius=2,labels=label,autopct='%3.1f%%',shadow=True,explode=dev_pisition,startangle=90,textprops={'fontsize': 14})plt.legend(["购物",'人情往来','餐饮美食','通信物流','生活日用','交通出行','休闲娱乐','其他'])plt.legend(loc='center right')plt.title('消费明细')plt.axis('equal')# 设置饼图内文字大小plt.show()

三.绘制散点图或气泡图

使用 pyplot 的 scatter() 函数可以快速绘制散点图或气泡图,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, *, plotnonfinite=False, data=None, **kwargs)

该函数常用参数的含义如下。

x,y :表示数据点的位置。s :表示数据点的大小。c :表示数据点的颜色。 marker :表示数据点的样式,默认为圆形。cmap :表示数据点的颜色映射表,仅当参数c为浮点数组时才使用。·norm :表示数据亮度,可以取值为0 ~~ 1。vmin,vmax :表示亮度的最小值和最大值。若传入了norm参数,则忽略vmin和vmax参数。alpha :表示透明度,可以取值为0 ~~ 1。- linewidths :表示数据点边缘的宽度。·edgecolors :表示数据点边缘的颜色。

使用scatter()函数绘制一个散点图,代码如下

num = 50x = np.random.rand(num)#50个均匀正态分布的样本值y = np.random.rand(num)plt.scatter(x, y,color='m')

气泡图

num = 50x = np.random.rand(num)y = np.random.rand(num)area = (30 * np.random.rand(num))**2plt.scatter(x, y, s=area,color="m")

汽车速度与制动距离的关系

​ 汽车的制动距离主要取决于车速。若车速增加 1 倍,则汽车的制动距离将增大至近 4 倍。 某汽车生产公司对一批丰田汽车进行抽样测试,并分别记录了不同的车速对应的制动距离, 具体如下表所示。

代码:

import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = 'SimHei'plt.rcParams['axes.unicode_minus'] = False# 准备 x 轴和 y 轴的数据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.scatter(x_speed, y_distance, s=50, alpha=0.9,color="m")plt.xlabel("车速")plt.ylabel("制动距离")plt.grid()plt.show()

四.绘制箱型图

使用 pyplot 的 boxplot() 函数可以快速绘制箱形图,boxplot() 函数的语法格式如下所示

boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None)

示例代码:

import numpy as npimport matplotlib.pyplot as pltdata = np.random.randn(100)# 绘制箱形图 : 显示中位数的线条, 箱体宽度为 0.3, 填充箱体颜色, 不显示异常值plt.boxplot(data, meanline=True, widths=0.3, patch_artist=True, showfliers=False)plt.show()

实例: 年和 年全国发电量统计

import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.family'] = 'SimHei'plt.rcParams['axes.unicode_minus'] = Falsedata_ = np.array([5200, 5254.5, 5283.4, 5107.8, 5443.3, 5550.6, 6400.2, 6404.9, 5483.1, 5330.2, 5543, 6199.9])data_ = np.array([4605.2, 4710.3, 5168.9, 4767.2, 4947, 5203, 6047.4, 5945.5, 5219.6, 5038.1, 5196.3, 5698.6])# 绘制箱形图plt.boxplot([data_, data_], labels=(' 年 ', ' 年 '),meanline=True, widths=0.5, vert=True, patch_artist=True)plt.show()

四.使用polar函数绘制雷达图

使用 pyplot 的 polar() 函数可以快速绘制雷达图,polar() 函数的语法格式如下所示

polar(theta, r, **kwargs)

theta :表示每个数据点所在射线与极径的夹角。

r :表示每个数据点到原点的距离。

实例分析:霍兰德职业兴趣测试

霍兰德职业兴趣测试是美国职业指导专家霍兰德根据他本人大量的职业咨询经验及其职业 类型理论编制的测评工具。根据个人兴趣的不同,霍兰德将人格分为研究型(I)、艺术型(A)、 社会型(S)、企业型(E)、传统型(C)和现实型(R)6 个维度,每个人的性格都是这 6 个维 度不同程度的组合。假设现在 6 名用户分别进行了测试,得出的测试结果如下表所示:

import numpy as npimport matplotlib.pyplot as pltplt.rcParams['font.family'] = 'SimHei'plt.rcParams['axes.unicode_minus'] = Falsedim_num = 6data = 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]]))data = np.concatenate((data, [data[0]]))# 维度标签radar_labels = [' 研究型 (I)', ' 艺术型 (A)', ' 社会型 (S)', '企业型 (E)', ' 传统型 (C)', ' 现实型 (R)']radar_labels = np.concatenate((radar_labels, [radar_labels[0]]))# 绘制雷达图plt.polar(angles, data)# 设置极坐标的标签plt.thetagrids(angles * 180/np.pi, labels=radar_labels)# 填充多边形plt.fill(angles, data, alpha=0.25)plt.show()

参考链接:Matplotlib — Visualization with Python

参考书籍:Python数据可视化%20(黑马程序员)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。