第一章:python:ggplot
第1节:python:ggplot基本概念
1,ggplot简单介绍
python的常用可视化包:Matplotlib,基于该包的二次开发的包(Pandas,Seaborn,ggplot)
动态图的绘制:Plotly,pyecharts(可在网页中展示动态图)
ggplot读取的数据格式为pandas的DataFrame,ggplot主要主要绘图思想为图层叠加思维。
ggplot的安装,在Linux下: pip install ggplot -i https://pypi.tuna.tsinghua.edu.cn/simple/
2,绘图思想及个例展示
绘制统计图就是从数据到集合对象(geometric object,缩写为geom,包括点、线、条形等)的图形属性
图形层次主要分为三个图形层:
1)数据层(必须存在的图形层)
2)几何图形层(即想要绘图的图形类型,也是必须存在的图形层)
3)美学层(作用是图形美化)
例如: from ggplot import *
p=ggplot(mtcars, aes('mpg', 'wt', color='factor(cyl)'))+geom_point()+ggtitle('mtcars')
print p
上面的例子中: ggplot(mtcars, aes('mpg', 'wt', color='cyl'))
表示的是数据层,其中mtcars是ggplot内置数据集,’mpg’和’wt’分别是定义的横纵坐标轴(x=’mpg’,y=’wt’) geom_point()
表示的是几何图形层,表示的含义是绘制散点图 ggtitle('mtcars')
表示的是美学层,表示的含义是添加标题“mtcars”
3,绘图常用概念
1,坐标系统
坐标系统分为笛卡尔坐标系、极坐标系等,同时通过坐标变换能够绘制饼图和柱状图(在ggplot语法中饼图和柱状图的绘制思路均是通过变换坐标系而形成)
2,数据
ggplot支持的数据格式必须是数据框格式,即pandas.DataFrame In [8]: mtcars.head()
Out[8]:
name mpg cyl disp hp drat wt qsec vs am gear carb
0 Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
1 Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
2 Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
3 Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
4 Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
3,标度
标度主要负责一下三个方面:
1)负责映射后图形属性的显示方式
2)具体包括图例和坐标刻度
3)标度变化:将字段的数据转化成电脑可以识别和像素颜色等
4,映射
将数据中的变量,映射到图形属性
5,几何对象
1)几何对象代表我们在图中实际看到的图形元素
2)几何对象可具体到点、线、正方形等
6,统计变换
1)对原始数据进行某种统计计算
2)可对原始数据进行计算,不改变原有数据,同时也生成新的数据集;例如对二元散点图加上一条回归线或者进行置信区间登记
7,图层
1)不同的图层用“+”号叠加
2)图层的组成部分
····1 > 数据和图形属性映射
····2 > 一种统计变换,即数据的变换,比如求组平均,求对数等
····3 > 一种几何对象
····4 > 一种位置调整方式
3)图层概念的优点
····1 > 在操作了叠加新的图层,修改统计变换之后,之前的数据依然可以使用
····2 > 在通过各种图形的叠加能够实现完成其他画图包很难完成的图形
不同的图层中,要满足图形的绘制,图层最少有一个数据层,一个几何图形层,而在进行绘图时,可以加入几个图形层,几个数据层,外层的内容会加入到内层的上一层
8,分面
1)分面是一种条件绘图,将数据按某种方式分组,然后分别绘图
2)facet_wrap(表示单维度分面)
3)facet_grid(表示多维度分面)
4,常用图形代码
1)ggplot()
所有ggplot的画图,其代码的第一句均是ggplot(),表示初始数据层
ggplot(数据集,美学图层(x=’x轴表示含义’, y=’y轴表示含义’))
2)geom_……()
表示一种图形类型,geom_point()
表示散点图,geom_line()
表示线图,geom_bar()
表示条状图
3)stat
表示统计变换
4)scale_
标度变换,指x,y轴的尺寸变换
5)facet
分面
6)xlim,ylim
限定X轴刻度范围,限定Y轴刻度范围。例如: p=ggplot(mtcars, aes('mpg', 'wt'))+geom_point()+xlim(15, 30)+ylim(2, 5)
限定x轴刻度范围从15到30,限定y轴刻度范围从2到5
7)labs
xlib()和ylib(),表示设定x轴及y轴坐标轴名称,例如:+xlib(‘my name’)+ylib(‘your name’)
8)themes_……
主题切换
9)coord_……
坐标轴变换
4,常用参数设置
1)data
数据集: ggplot(aes(x='mpg', y='wt'), data=mtcars)
一般数据集写在前面,则不需要“data”这个参数,数据集写在前面则data参数可以省略掉。例如:p=ggplot(mtcars, aes('mpg', 'wt', color='cyl'))
2)aes
映射:
x轴数据,y轴数据
3)color / c
颜色:color=”
但对于ggplot绘图,图形上色分为两种,
第一种:aes(x=’mpg’, y=’wt’, color=’gear’) 这种图形上色的作用在于,利用哪个维度的数据作为一种颜色来区分其他不同数据集,这个例子是用gear列的数据,作为一个数据集,以该列的数据值作为颜色区分其他数据集。如上面图形例子展示的那样,散点图以cyl作为数据集,将图形的点分成三色(红、绿、蓝,值为4、6、8)
但color这个参数在设定时可以得到两种图片效果,如果是ggplot(mtcars, aes('mpg', 'wt', color='factor(cyl)'))
这样的写法,最后得到的点图颜色就如上面所看到的那个图片颜色,分为三色(红、绿、蓝,值为4、6、8)
但如果是不加factor()这个参数,ggplot(mtcars, aes('mpg', 'wt', color='cyl'))
这样的写法会生成三种渐变色:
第二种: geom_point(color='red')
则单纯的表示上色,所有的点都是一种红色,当然这种单独上色只能用固定的字符或数值表示
4)fill
填充:
fill的颜色填充和color的颜色添加存在一定的区别
主要区别在于,fill是表示颜色填充,其颜色填补是一个面;而color表示颜色添加,只是在框架的图边界添加相应的颜色。fill和color的区别主要体现在直方图和条形图当中;如果条状颜色全部填充则用fill;如果只想给条状的边界添加颜色则用color
5)size
尺寸大小:size=”
用法和color相似,同样size出现在aes()函数当中表示分离变量,而在geom_point()
当中表示图形大小。在aes()当中,size表示用大小区分类别,即用哪种数据值去对数据集进行分类;而在geom_point()
中的size则单纯的表示点的大小。
例如: p=ggplot(mtcars, aes('mpg', 'wt', size='factor(cyl)'))+geom_point()+ggtitle('mtcars')
print p
加入size='factor(cyl)'
则散点图以cyl作为数据集,将图形的点分成三种大小(值分别为4、6、8),即按照值的大小区分为三种点的大小;
p=ggplot(mtcars, aes('mpg', 'wt', size='cyl'))+geom_point()+ggtitle('mtcars')
如果不加factor()
,则图形的点也会分成三种大小,只是size为4.0的这个大小会无法显示点的位置,因为根据颜色渐进的效果,图形的最小点会以最低的基准而不做显示。
如果size=”加入到geom_point()当中,即p=ggplot(mtcars, aes('mpg', 'wt'))+geom_point(size=20)
则所有的点的大小均为20,注意这里的size=后面要跟数字而不是字符串
6)shape
形状:shape=”
用法与color和size相同,依然是可以利用形状分组或仅仅改变点的形状
7)alpha
透明度
8)group
分组
9)factor
将变量转化为分类变量,一般情况下,维度是字符串类型,而数值为数值型,数值型可进行数字计算,而维度则只能进行分组运算,就像group分组,他一定是factor类型