【Udacity】3,5,3,散点图

本文介绍如何使用R语言的ggplot2包绘制散点图,包括基本的散点图绘制方法、解决过度绘制问题的技术、使用坐标转换改善可视化效果等。文章通过实例展示了如何调整图形属性以更好地展示数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最好使用散点图来研究两个连续变量之间的关系。
当我们像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")

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值