数据可视化库:1.matplotlib; 2.seabron(辅助的库,更强大更丰富更好看); 3.Axes3D ...
1.导包
1 import numpy as np 2 import pandas as pd 3 4 import matplotlib.pyplot as plt 5 6 import seaborn as sns 7 8 #去除执行当中报警告提示的库 9 import warnings 10 warnings.filterwarnings("ignore") 11
2.图形初始化设置
1 # 全局样式,style样式,use使用figure身材,figsize(x,y)大小,单位是英寸 2 plt.style.use({\'figure.figsize\':(20,10)}) 3 4 # 显示问题冲突 5 plt.show() # 强制显示 6 7 #在pycharm中使用,图片打印不出来的时候,使用魔法方法,在行里显示,只能在jupyter中使用 8 %matplotlib inline 9 10 #国外的库都不支持中文 11 from pylab import mpl # 使得默认支持中文 需要引入pylab库中的mpl 12 mpl.rcParams[\'font.sans-serif\'] = [\'SimHei\'] # 设置字体 13 mpl.rcParams[\'axes.unicode_minus\'] = False
3.seaborn库基本设置
1 sns.set_style(\'darkgrid\') # sns设置背景颜色 white(默认) dark暗色 darkgrid暗网 2 3 sns.set_style() # 设置样式 4 5 sns.set_context(\'paper\') # 控制刻度 6 7 # 调色板 8 sns.color_palette() # 设置颜色 9 sns.set_palette() # 设置颜色 10 sns.palplot() # 显示颜色,在数据可视化中,带有plot的都是显示作用 11 12 # h=0.01, l=0.6 (亮度), s=0.65(饱和度)
13 # 调色板 cool hot rainbow hls spring...
14 Sns.palplot(sns.color_palette(‘hls’,7))
线性图:plt.plot(x,y)
x 表示x轴数据点,y 表示y轴数据点
网格线:plt.grid(color=\'black\',axis=\'both\',alpha=0.3)
color颜色;alpha 透明度 ;axis轴,x或y。
坐标界限:plt.axis(\'auto\') 随着横纵坐标轴的数据自动设置
plt.axis([-15,15,-5,5]) 表示x轴界限是【-15,15】,y轴界限是【-5,5】
取消样式:plt.axis(\'off\')
标题:plt.title()
plt.title(\'this is sun!\')
x轴的标记:xlabel()
plt.xlabel(\'X\',fontsize=20,color=\'orange\')
y轴的标记:ylabel()
plt.ylabel(\'f(x)\',fontsize=20,color=\'cyan\',rotation=0) # rotation角度,f(x)旋转90度
设置图例: plt.legend()
注意:画图的时候指定好图例名字才有效,如 label=\'top\'
指定图例的位置:loc参数
plt.legend(loc=0):loc=0代表最适合的位置,计算机自动识别
plt.legend(loc=[0,1]):表示在图片的左上角,将图例放在画布的外面,是x或者y的倍数 ,这里是x的0倍 y的1倍
设置图片大小(局部的)
plt.figure(figsize=(20,10))
点 ,线,颜色的属性
线 linestyle:(简写ls), ①:②-- ③-.④-
宽度 linewidth:(简写lw)
字体 fontsize:(单位px)
透明度 alpha :百分比
角度 rotation
点 marker: o(圆点) s(方形) p(五边形) d(小菱形) 1 2 3 4 8(八边)'*'
点颜色color:c
点的大小 markersize
点边缘的宽度 markeredgewidth
点边缘面的颜色 markeredgecolor
点中间面的颜色 markerfacecolor
1 plt.plot(x,y,label=\'top\',ls=\':\',lw=3,c=\'c\',marker=1,markersize=100) 2 3 plt.plot(x,-y,label=\'bottom\',ls=\'--\',lw=2,marker=\'s\',markersize=7,color=\'#0FF0FFF0\') 4 5 plt.axis(\'equal\')
更换刻度
1 x = np.arange(10) 2 y = x + 10 3 plt.plot(x,y,c=\'orange\',lw=10,marker=\'o\',markersize=100,markerfacecolor=\'r\',markeredgecolor=\'g\',markeredgewidth=10) 4 5 #第一个参数是坐标的范围 第二格参数是要替换的字符 映射 6 plt.xticks(np.arange(0,9),list(\'abcdefghi\'),fontsize=20) 7 plt.yticks(np.arange(0,9),list(\'abcdefghi\'),fontsize=20)
plt 中的实体标识 :碰到特殊符号不好打印的时候 如pi(3.14)
1 # subplot代表的是画布 2 axes = plt.subplot() 3 4 # 画布中的用axes调用 5 axes.set_xticks([-pi,-pi/2,0,pi/2,pi]) 6 axes.set_xticklabels([\'-$\pi$\',\'-$\pi$/2\',\'0\',\'$\pi$/2\',\'$\pi$\'],fontsize=20,color=\'orange\',rotation=30) 7 8 axes.set_yticks([-1,0,1]) 9 axes.set_yticklabels([\'min\',0,\'max\'],fontsize=20,color=\'orange\',rotation=30) 10 11 # 画布中设置标题 12 axes.set_title(\'abc\')
直方图 plt.hist()
1 # 针对一维数据进行统计的,统计出现次数 2 a = np.random.randint(0,10,10) 3 a # 得到 array([8, 3, 2, 3, 5, 3, 4, 5, 6, 1]) 4 plt.hist(a,bins=20) # bins 调节直方的宽度 5 6 # seabron当中的直方图 7 sns.distplot(a,bins=20,color=\'r\')
柱状图plt.barh()
描述的是二维数据的
matplotlib里面的柱状图,纵向的:plt.bar(X,Y)
matplotlib里面的柱状图,横向的:plt.barh(X,Y)
seabron里面的柱状图(推荐使用),hue匹配条件
1 sns.barplot(data=titanic,x=\'sex\',y=\'survived\',hue=\'class\')
饼图 plt.pie()
1 plt.figure(figsize=(14,8)) 2 gdp = np.array([2794696,20513000,2689992,13457267,5070626,4029140,2808899]) 3 label=[\'fr\',\'usa\',\'ind\',\'ch\',\'jp\',\'ge\',\'uk\'] 4 5 explode = [0,0,0.1,0,0,0,0.2] # 图片分离ind uk 6 # textprops={\'fontsize\':30} 设置字体大小 7 plt.pie(gdp,labels=label,textprops={\'fontsize\':30},explode=explode,colors=sns.color_palette(\'hls\',7)) 9 10 plt.axis(\'equal\')
箱图plt.boxplot()
主要是检查数据的分布,查看异常值
plt.boxplot(data)
使用seabron画的箱图
sns.boxplot(data)
散布图(散点图)plt.scatter()
主要作用:查看数据的分布情况 越乱的数据越不利于做机器学习
1 # 使用sns里的鸢尾花数据集 2 iris = sns.load_dataset(\'iris\') 3 4 plt.scatter(iris.iloc[:,0],iris.iloc[:,1],c=target,cmap=\'rainbow\') # c=target会自动给每种类别分配颜色的,使用seabron里面自带的鸢尾花数据集 5 6 # seabron中的散布图 7 # 1.散步密度图 8 sns.jointplot(data=iris,x=\'sepal_length\',y=\'sepal_width\',color=\'orange\',kind=\'hex\') # kind:{"scatter"|"reg"|"resid"|"kde"|"hex"}散点|带有回归的线|带有回归的线(考虑到行了)|密度图(像遥感)|六角形 9 10 # 2.回归散布图 11 sns.regplot(data=iris,x=\'sepal_length\',y=\'sepal_width\') # 拟合曲线 根据花萼的 没有什么规律 12 13 sns.regplot(data=iris,x=\'petal_length\',y=\'petal_width\',) # 根据花瓣的回归散布图,比较有线性规律 14 15 # 3.线性分类散布图 16 sns.lmplot(data=iris,x=\'petal_length\',y=\'petal_width\',hue=\'species\',markers=[\'o\',\'x\',\'d\']) # 每一种的趋势单独的预测出;hue=\'species\'条件,根据种类;markers=[\'o\',\'x\',\'d\'] 点的形状 圆 x 棱形 17 18 # 4.散布图矩阵 19 sns.pairplot(data=iris,hue=\'species\',kind=\'scatter\',diag_kind=\'auto\') # diag_kind : {\'hist\', \'kde\'},对角线上图形类型的选择 hist直方图 kde 密度图
3D图形
1 # 绘制3D图 2 from mpl_toolkits.mplot3d.axes3d import Axes3D # 引入3d库 3 fig = plt.figure(figsize=(16,10)) 4 5 #实例化Axes3D 6 axes3d = Axes3D(fig) 7 8 #调用对象scatter3D 9 axes3d.scatter3D(iris.iloc[:,0],iris.iloc[:,1],iris.iloc[:,2],c=target,s=60,cmap=\'hot\') 10 11 # 保存 12 plt.savefig(\'sca.png\',dpi=100)