最好使用散点图来研究两个连续变量之间的关系。
当我们像X和Y传递两个连续变量时,qplot自动选择散点图
1、qplot绘制散点图
getwd()
library('ggplot2')
pf <- read.csv('pseudo_facebook.tsv',sep = '\t')
#也可以用下面的代码导入数据--read.delim('pseudo_facebook.tsv')
list(pf)
qplot(x=age,y=friend_count,data=pf)
#qplot(age,friend_count,data=pf)这个代码和上面的效果一致,x先,y后
2、ggplot绘制单点图
等效的ggplot代码
ggplot(aes(x = age, y = friend_count), data = pf) +
geom_point()
ggplot代码允许我们制定更为复杂的图形。
ggplot2 geoms
ggplot教程
summary(pf$age)
Min. 1st Qu. Median Mean 3rd Qu. Max.
13.00 20.00 28.00 37.28 50.00 113.00
而我们从上面的散点图可以看出,我们不能保证90岁以上的用户说的是真的,因此我们将添加xlim的图层。
建议:在使用ggplot绘制图形时,使用+添加图层,这样后期试行代码时更容易发现查找出问题
> ggplot(aes(x=age,y=friend_count),data=pf)+
+ geom_point()+
+ xlim(13,90)
3、过度绘制
* 我们通过设置alpha值来设置点的透明度
alpha=1/20表示取20个点才能等效原来的一个黑点,还有一个理解是值20以上的点才能显示全黑。
> ggplot(aes(x=age,y=friend_count),data=pf)+
+ geom_point(alpha=1/20)+
+ xlim(13,90)
- 添加协议都通,通过jitter实现,将geom_point改为geom_jitter
> ggplot(aes(x=age,y=friend_count),data=pf)+
+ geom_jitter(alpha=1/20)+
+ xlim(13,90)
年龄是连续变量,但是实际上只有整数,所以我们看到上面的图形完美的排成列,这不是年龄的真实反映,这些列从直觉上感觉有误,我们要保证能够看到更多的点,所以使用抖动可想每个年龄添加一些噪音。这样可以更清晰的获得年龄和好友数的图像。
4、coord_trans()
?coord_trans
> ggplot(aes(x=age,y=friend_count),data=pf)+
+ geom_point(alpha=1/20)+
+ xlim(13,90)+
+ coord_trans(y="sqrt")
注意这里我们从jitter重新回到point。
如果我们仍然希望添加抖动,那么我们可以添加一些复杂语法来指定我们仅希望抖动年龄。我们也需要注意,因为有些人的好友个数为0,如果向0好友个数添加噪声,结果可能出现好友个数为负的情况。哪些平方根就成为虚数。要进行这个调整,我将设置位置参数等于位置抖动,然后将其传递给最小高度0.
> ggplot(aes(x=age,y=friend_count),data=pf)+
+ geom_point(alpha=1/20,position = position_jitter(h=0))+
+ xlim(13,90)+
+ coord_trans(y="sqrt")