太阳花绘制代码_太阳花图,高大上的高密度散点图

70af80f3a0003d892c0d63055239170f.png

在研究中,我们需要处理大型的数据集,这时候使用简单散点图、直方图等图形时可能就不太合适了。

今天来学习一个表示高密度的图形。

1. 加载数据集

今天使用的是car包里面的Vocab数据集,数据集包含3万多行和4列变量。

install.packages("car") # 安装包
library(car) # 加载R包
attach(Vocab) # 绑定数据集
head(Vocab) # 查看数据集前六行

#          year    sex education vocabulary
# 19740001 1974   Male        14          9
# 19740002 1974   Male        16          9
# 19740003 1974 Female        10          9
# 19740004 1974 Female        10          5
# 19740005 1974 Female        12          8
# 19740006 1974   Male        16          8

数据集中的变量为性别、出生年月、教育、词汇测验分数等,较为简单。

2. 绘制简单散点图

上面的数据集包含了4个变量,我们可以研究词汇分数和受教育程度之间的关系,正常来讲,教育程度较低的人词汇分数也会比较低。

我们可以使用散点图来显示这种关系,代码如下:

plot(Vocab$education, Vocab$vocabulary,
     main = "R语言统计与绘图 公众号")
0b7a5cbda9076f1bff5c14f3c8393014.png

如上图所示,因为数据集中观测对象过多,在图上看不到线性关系,也看不到其他关系。

在前面绘制带状图时,有一个指定抖动的参数(jittering)来分离重合的散点,在这里我们使用这个参数来重新绘制散点图试试。

sp(Vocab$education, Vocab$vocabulary, # 绘图数据
   jitter = list(x = 2, y = 2), # 抖动位置参数
   smoother = F, spread = F, reg.line = F,
   main = "R语言统计与绘图 公众号") 
fa1eb06b817491ed67fb109295227f8c.png

可以看到,相比较于前面的图形,这幅图是可以看到线性关系是存在的。

这里面比较关键的参数就是jitter = list(x = 2, y = 2),可以修改里面的数字,看看其他效果。

3. 绘制太阳花图

前面的图形看起来不怎么友好,可以使用其他图形来替代,比如说太阳花图(sunflower plot),也可以叫做向日葵散点图。

太阳花图是在特定的图形位置上使用不同的字符。

sunflowerplot(Vocab$education, Vocab$vocabulary, # 绘图数据
              main = "R语言统计与绘图 公众号", # 标题
              col.main = "deepskyblue3", # 标题颜色
              xlab = "受教育程度", # x轴标签
              ylab = "词汇分数")  # y轴标签
cca6f44a9d30cf5f6552317f05ad6e90.png

上面的太阳花图看起来有点像带抖动的散点图。

我们可以试着解读下这张图片:

先看图上最左上角的点,这是1个黑点,该黑点上方和下方都有1个红色花瓣,这两个红色花瓣表示2个观察对象,意味着在3万多名观测对象中,有2个人没有受过教育,但是词汇分数很高。

同样,在最右下角,有1个黑点,有3片红色花瓣,表示有3个观测对象,意味着在3万多名观测对象中,有3个人受过高等教育,但是词汇分数很低,为0。

黑点周围的红色花瓣数目越多,表示该点的观测对象越多,红色实心圆圈表示有很多很多的观测对象。

从这张图上,我们也可以看到,受教育程度越高,词汇分数越高,这种关系是存在的。

4. sunflowerplot()函数解释

sunflowerplot(x, y = NULL, number, log = "", digits = 6,
              xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL,
              add = FALSE, rotate = FALSE,
              pch = 16, cex = 0.8, cex.fact = 1.5,
              col = par("col"), bg = NA, size = 1/8, seg.col = 2,
              seg.lwd = 1.5, ...)
## 函数解释
x, y # 绘图用的x轴,y轴变量,长度应一致
number # 长度为n的整数向量
log = "" # 表示对数坐标比例的字符。
digits = 6 # 有效数字位数
xlab, ylab # x轴、y轴标签
xlim, ylim # x轴、y轴的范围
add # 逻辑词,将图形添加到先前的图形上
rotate # 逻辑词,为TRUE,则随机旋转太阳花图
pch # 设置太阳花中心点的绘图字符
cex # 设置太阳花中心点绘图字符的缩放倍数
cex.fact # 有太阳花叶时中心点绘图字符的缩放倍数
col # 设置颜色
bg # 设置背景
size # 太阳花叶也就是太阳花瓣的大小
seg.col # 设置太阳花叶的枝干颜色
seg.lwd # 设置太阳花叶的枝干粗细
参考资料
  1. Graphing Data with R.John Jay Hilfiger著.
  2. sunflowerplot()函数帮助文件

既往专辑

9e389ad3d77699ae0e3407f57bea569d.png

cc6c1262a27b575c4b613f99eae7ff5e.png

84766f8ef31f9de1b47400116e8662a1.png

48b1e42540f652336e79265289e3e985.png

38142a577c1191637f202d2ee1c98b49.png

68ecd420fdc59fb19eac14122dfbc3cb.png

249d020732257e8437551af76464190d.png

3b25df964d0709eaeaa5e50248f67735.png

b7263b6858a4fa0e4f07725afa4fcca6.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值