数据可视化之Matplotlib实例

学习了数据分析可视化的基本流程,对Matplotlib绘图工具进行实际操作。加深绘图函数的理解。

基础图形

1.绘制直方图:可直观的传递数据的分布情况。函数:plt.hist(data, bins)

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
#数据源
HeightList = [168, 155, 182, 170 , 173, 161, 155, 173, 176, 181, 166 ,172, 170]
#设定区间
Sec = range(150, 191, 5)
#绘制直方图
plt.hist(HeightList, bins=Sec)
plt.show()
View Code

效果图

2.绘制条形图:展现同类数据的大小以及数据之间的差别。函数:plt.bar(data,datatype)

import matplotlib as mpl
import matplotlib.pyplot as plt

classes = ["一班", "二班", "三班"]
scores = [70, 80, 60]
#设置字体使之支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
#直方图
plt.bar(classes,scores)
#设置条形图的显示文本
for i in range(3):
    plt.text(i, scores[i], scores[i])
#设置标题
plt.title("班级的成绩条形图")
#设置横坐标
plt.xlabel("班级")
#设置纵坐标
plt.ylabel("成绩(分)")
plt.show()
View Code

效果图

3.绘制折线图:通常显示随时间变化的连续数据,因此非常适用显示数据在周期内的趋势。函数:plt.plot(X,Y)

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline

#年份,实际时间区间[2005,2019)
year = range(2005, 2020)
#身高
height = [168, 155, 182, 170 , 173, 161, 155, 173, 176, 181, 166 ,172, 170, 175, 178]
#绘制折线图
plt.plot(year, height)
plt.show()
View Code

效果图

4.绘制饼图:常用于显示一个数据系列中各项的大小和各项总和的比例。函数:plt.pie(data,datatype)

import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
#中文支持
plt.rcParams['font.sans-serif'] = ['SimHei']
#数据种类
NameType = ["房贷", "饮食", "出行", "教育"]
#数据值
data = [8000, 2000, 2000, 3000]
#绘制饼图,autopct = '%.2f%%',设置显示2位小数,并以%形式显示,%为转义符
plt.pie(data, labels = NameType, autopct = '%1.2f%%')
View Code

效果图

 5.绘制散点图:是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合。函数:plt.scatter(data_X, data_Y)

import matplotlib as mlp
import matplotlib.pyplot as plt
%matplotlib inline
#中文支持
plt.rcParams['font.sans-serif'] = ['SimHei']
data = [[18.9, 10.4], [21.3, 8.7], [19.5, 11.6], [20.5, 9.7], [19.9, 9.4], [22.3, 11.0], [21.4, 10.6], 
        [9.0, 9.4], [10.4, 9.0], [9.3, 11.3],[11.6, 8.5], [11.8, 10.4], [10.3, 10.0], [8.7, 9.5], 
        [14.3, 17.2],[14.1, 15.5], [14.0, 16.5], [16.5, 17.7], [15.1, 17.3], [16.4, 15.0],[15.7, 18.0]] 

data_X = [item[0] for item in data]
data_Y = [item[1] for item in data]
#绘制散点图
plt.scatter(data_X, data_Y)

plt.title("商品价格与销售量散点图")
plt.xlabel("价格(元)")
plt.ylabel("销量(千件)")
#设置坐标文本
plt.text(10,10,"纸巾")
plt.text(16,16,"牙膏")
plt.text(21,10,"洗衣液")

plt.show()
View Code

效果图

6.绘制箱线图:又称为盒须图、盒式图,是一种用作显示一组数据分散情况的统计图,主要用于反映原始数据的特征,主要有展示图值有:上边缘 下边缘 中位数 上四分位数 下四分位数 异常值(点)。函数:plt.boxplot(data)

import matplotlib as mlp
import matplotlib.pyplot as plt
%matplotlib inline
#某班的语文成绩
data = [86.0, 90.0, 89.0, 79.0, 73.0, 91.0, 94.0, 85.0, 86.0, 77.0, 94.0, 88.0, 79.0, 
        67.0, 87.0, 84.0, 82.0, 71.0, 86.0, 74.0, 86.0, 93.0, 91.0, 85.0, 79.0, 73.0, 
        81.0, 83.0, 89.0, 90.0]
#设置箱线图
plt.boxplot(data)
plt.show()
View Code

效果图

7.绘制极线图:用于表示极坐标下数据的分布情况,多用于显示具有一点周期性的数据。函数:plt.subplot(111, projection = 'polar').plot(theta, r)

import matplotlib.pyplot as plt
%matplotlib inline
#极径和角度

#设置极径
r = [1, 2, 3, 4, 5]
#pi = 3.141592653589793
#设置角度
theta = [0.0, 1.5707963267948966, 3.141592653589793, 4.71238898038469, 6.283185307179586]

#ax = plt.subplot(111, projection = 'polar')
#ax.plot(theta, r)
#绘制极线图
plt.subplot(111, projection = 'polar').plot(theta, r)
View Code

效果图

8.绘制阶梯图:是一种以无规律、间歇性阶跃的方式表达数值变化的方法,它不仅可以像折线图反映数据发展的趋势,还可以反映数据状态的持续时间。函数:plt.step(year, height)

import matplotlib.pyplot as plt
%matplotlib inline
#年份
year = range(2005, 2020)
#某人的仔2005年~2019年身高变化
height = [155, 155, 161, 166, 168, 170, 170, 172, 173, 173, 175, 176, 178, 181, 182]
#绘制阶梯图
plt.step(year, height)
plt.show()
View Code

效果图

高级图形:

1.绘制堆积图:常用于综合展示不同分类的指标趋势以及总和的趋势。函数:plt.bar(datatype, data_y, bottom = data_x, color = 'r', label = 'name')

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
#5位学生学号
StuNum = ["001", "002", "003", "004", "005"]
#语文成绩
ch = [72, 80, 66, 77, 92]
#数学成绩
math = [62, 92, 72, 75, 88]
#英语成绩
english = [78, 81, 73, 75, 88]
#绘制堆积图
plt.bar(StuNum, ch, color = 'r', label = 'chinese')
#在语文成绩之上绘制数学条形图
plt.bar(StuNum, math, bottom = ch, color = 'g', label = 'math')
#求出语文和数学各个学生成绩之和
chandmath = [ch[i] + math[i] for i in range(5)]
#在语数成绩之和之上绘制英语条形图
plt.bar(StuNum, english, bottom = chandmath, color = 'b', label = 'english')
plt.show()
View Code

效果图

2.绘制分块图:可将不同数据集分块展示,方便对比同类数据某一具体属性的高低。函数:plt.bar(datatype, data_y, bottom = data_x, color = 'r', label = 'name')

import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif'] = 'SimHei'
NameList = ["语文", "数学", "英语"]
#各个班级三科平均成绩
classes1 = [81.4, 83, 87.1]
classes2 = [85.6, 87.4, 90]
classes3 = [78, 81.2, 86.1]
#设置宽度
width = 0.4
#设置一班起始绘图坐标
x = [1, 3, 5]
#绘制分块图
plt.bar(x, classes1, label="一班", fc = 'r', width = width)
#设置二班起始绘图坐标
x = [1.4, 3.4, 5.4]
plt.bar(x, classes2, label="二班", fc = 'g', width = width)
#设置三班起始绘图坐标
x = [1.8, 3.8, 5.8]
plt.bar(x, classes3, label="三班", fc = 'b', width = width)
#设置学科显示坐标
x = [1.4, 3.4, 5.4]
plt.xticks(x, NameList)

#plt.legend()

plt.title("各个班级三科平均成绩")
plt.xlabel("学科")
plt.ylabel("成绩")
View Code

效果图

3.绘制气泡图:可用来展示是三个变量之间的关系。函数:plt.bar(x, data_x, label="name", fc = 'r', width = width)

import matplotlib.pyplot as plt
%matplotlib inline

plt.rcParams['font.sans-serif'] = 'SimHei'
#人群年龄、身高、体重变化情况
#年龄数据
x = [22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0]
#身高数据
y = [176.0, 186.0, 164.0, 171.0, 183.0, 194.0, 180.0, 178.0, 190.0, 170.0, 168.0, 192.0, 173.0, 178.0, 181.0, 186.0, 177.0, 187.0, 180.0, 195.0, 179.0, 186.0, 187.0, 190.0, 182.0, 184.0, 176.0, 178.0, 164.0, 185.0, 181.0, 175.0, 173.0, 172.0, 172.0, 169.0, 168.0, 188.0, 168.0, 174.0, 170.0]
#体重数据
z = [70.0, 220.0, 50.0, 170.0, 210.0, 270.0, 150.0, 150.0, 360.0, 150.0, 150.0, 120.0, 150.0, 170.0, 170.0, 160.0, 180.0, 460.0, 480.0, 480.0, 490.0, 300.0, 300.0, 250.0, 300.0, 250.0, 350.0, 180.0, 100.0, 250.0, 160.0, 170.0, 160.0, 180.0, 150.0, 150.0, 130.0, 180.0, 150.0, 160.0, 140.0]
#绘制气安排 alpha设置透明图,取值区间为[0,1],默认为1,越接近于0越透明
plt.scatter(x, y, s=z, alpha = 0.5)
View Code

不设置透明(alpha=1)图效果图

设置透明度为(alpha=0.5)的效果图

分析数据时,有了可视化管理,可直观地观测数据的变化情况,便于分析展现和数据洞察,更易于概括和总结事物的发展规律,以便做出更优的决策。

猜你喜欢

转载自www.cnblogs.com/no-end-to-learning/p/11798885.html