Python可视化是将图表数据转换为直观易懂的图形表达
主要使用工具库有:
使用页面GUI模式显示图像,图像可交互
#%matplotlib notebook
import matplotlib.pyplot as plt #载入绘图库
折线图用于显示随时间或有序类别的变化趋势。
plt.plot(
[1,2,3,4,5], #x轴
[2,5,1,8,4], #y轴 只写一个坐标轴默认y轴
#线条样式
color = 'red',
linestyle = '-',
linewidth=2,
#标记样式
marker='o',
markerfacecolor='#df448b',
markersize=10,
alpha =0.5 #透明度
)
plt.show()
#汇率
eurcny = [6.8007,6.8007,6.8015,6.8015,6.8060,6.8036,6.8025,6.7877,6.7835,6.7700,6.7463,6.7519,6.7595,6.7669,6.7511,6.7511,6.7539,6.7430]
#日期
date = [3,4,5,6,7,10,11,12,13,14,17,18,19,20,21,24,25,26]
#图像大小
plt.figure(figsize=(15,10))
plt.plot(
date,
eurcny,
color ='r',
marker ='o',
markerfacecolor = 'g',
linestyle='--',
linewidth=10,
markersize=20,
alpha=0.3
)
plt.plot(eurcny)
plt.grid(linewidth=0.3) #网格
散点图可以显示若干数据系列中各数值之间是否存在相关性
#数据
x=[1,3,5,7,9,11,13,15,17]
y=[2,-5,19,3,5,8,12,6,1]
plt.scatter(x,y)
plt.show()
条形图和柱状图用来比较各独立类别下的某单独数据的大小
x=[1,2,3,4,5]
y=[3,6,1,8,2]
#柱状图
plt.bar(x,y,width=0.5)
plt.xticks(x,['a','b','c','d','e']) #x与y轴的坐标值可以修改
#plt.yticks([2,4,6,8,10],['a2','b2','c2','d2','e2'])
plt.show()
#条形图
plt.barh(
x,
y,
height=0.4,
)
plt.show()
男生平均分(语文/数学/英语/物理/化学)
boy =[85.5,91,72,59,66]
女生平均分
girl =[94,82,89.5,62,49]
x1 = [0.85,1.85,2.85,3.85,4.85]
x2 = [1.15,2.15,3.15,4.15,5.15]
boy =[85.5,91,72,59,66]
girl =[94,82,89.5,62,49]
plt.bar(
x1,
boy,
color='r',
alpha=0.3,
width=0.3,
)
plt.xticks([1,2,3,4,5],['Chi','Math','Eng','Phy','Che'])
plt.bar(
x2,
girl,
color='blue',
alpha=0.3,
width=0.3,
)
plt.grid(linewidth=0.1)
#进阶 分数显示到图上
for i,j in zip(x1,boy):
plt.text(
i, #x轴,course学科位置
j, #y轴 boy分数
'%.1f'%j, #数据转为一位小数
ha = 'center', #水平对齐
va = 'bottom', #垂直对齐
alpha=0.5
)
for i,j in zip(x2,girl):
plt.text(
i, #x轴,course学科位置
j, #y轴 boy分数
'%.1f'%j, #数据转为一位小数
ha = 'center', #水平对齐
va = 'bottom', #垂直对齐
alpha=0.5
)
plt.show()
饼图用于显示各项相对总和的百分比大小
p = [15,30,45,10]
plt.pie(p)
plt.show()
mark = ['America','China','India','Saudi','Russia','Japan','Britain','Germany','France']
percent =[0.5548467,0.14444868,0.05094268,0.04846696,0.046753,0.04418206,0.04161112,0.03799276,0.03075605]
plt.pie(
percent,
labels = mark,
explode=(0,0.1,0,0,0,0,0,0,0), #突出块,突出比例
autopct='%1.1f%%', #显示百分比方式
shadow=False, #阴影效果
startangle=-110 #饼图起始的角度,度数,默认0为右侧水平180°开始,逆时针旋转
)
plt.axis('equal') #正圆形饼图,x/y轴尺寸相等,默认是扁圆
plt.show()
直方图是表达数据的分布情况的统计图表,一般用来表示同等区间内,某类数值出现的个数或频率(频率=出现次数/总数)
x轴表示分组数据,y轴表示分布情况
从频率分布直方图可以直观估计出:
直方图与柱状图区别:
#成绩数据
h1 = [88.2, 83.5, 68.8, 85.4, 78.6, 69.3, 60.6, 91.2, 52.7,
85.9, 57.1, 68. , 66.6, 78.2, 78.8, 85. , 89.1, 74.4,
93.6, 75.7, 54.3, 55. , 90.9, 79.4, 94.4, 86.7, 82.4,
76.7, 78.7, 72.3, 83.9, 78.6, 80. , 70.5, 87.1, 80.3,
87.9, 65.1, 67.4, 61.5, 49.7, 77.1, 91.4, 72. , 61.5,
73.9, 76.9, 88.2, 51.2, 53.9]
h2 = [79.5, 99. , 80. , 71. , 79.2, 85.6, 79.2, 68.8, 68.7, 96.5]
plt.hist(
h1,
10, #直方个数
density=1, #默认0,数据出现个数 1,出现个数归一化为出现的频率
histtype='bar', #样式默认bar,stepfilled填充颜色,step不填充只有线条
facecolor='b', #直方图颜色
edgecolor='g', #直方图边框颜色
alpha=0.3
)
箱线图又名盒须图,是一种用作显示一组数据离散情况的统计图表,常用作多组数据的综合统计比较
四分位数:
第一四分位数(Q1),又称‘较小四分位数’,等于该样本中所有数值从小到大排列后第25%的数字
第二四分位数(Q2),又称‘中位数’,等于该样本中所有数值由小到大排列后第50%的数字
第三四分位数(Q3),又称‘较大四分位数’,等于该样本所有值中所有数值由小到大排列后第75%的数字
箱线图主要包含5个统计量,从上到下,从高到低
最大非异常值,上边线
Q3,箱体上边缘四分位数
Q2,中位线数
Q1,箱体下边缘下四分位数
最小非异常值,下边线
除了上面5个统计量,上下边缘外侧可能还有异常值
Q3和Q1的差值,即四分位数差
大于Q3 1.5倍四分位数差的值,或小于Q1 1.5倍四分位数的值,划为异常值
a = [15,5,9,22,4,-5,45,-22]
plt.boxplot(a)
#plt.show()
a =[42,55,79,68,15,98]
b =[32,59,77,100,92,88,5,0]
c =[92,98,97,65,97,100,0]
plt.boxplot(
(a,b,c),
labels=('a','b','c'),
showfliers=True, #是否显示异常值
whis=1.5, #指定异常值参数
showmeans=True, #是否显示平均值
meanline=True, #是否用线标识平均值,默认用点
widths=0.3, #柱子宽度
vert = True, #默认True纵向,False横向
patch_artist=False, #是否填充颜色
boxprops={'color':'green'}, #箱体样式
)
plt.show()
热力图以二维形式展示数据的大小,主要用于数据的重要程度/相关度展示
a = [
[1,2,3],
[4,5,6],
[7,8,9]
]
plt.imshow(
a,
#cmap='gray', #配色,gray灰度
#origin='lower', #水平翻转,默认upper,lower
interpolation='lanczos', #渲染,模糊
)
plt.colorbar() #侧栏