前言
先前提到了60-R可视化-8-用ggsignif做统计分析绘图 (qq.com)这个包。
当时挖了一个坑:
那么问题来了,我的字体该加到哪里呢?
基本的ggplot 就够了
比如你可以将内容以captain 的形式加在图片的侧方。
ggstatsplot 就是个很好的例子:
subtitle, captain 都是很不错的选择。
参考下面就行了:57-R可视化-6-ggplot2基石三部曲最终之进阶为菜鸟 (qq.com)
我非要加在图片里
代码语言:javascript复制p <- ggplot(iris) geom_point(aes(Sepal.Length, Sepal.Width))
# Solution 1
p geom_text(x=3, y=30, label="Scatter plot")
# Solution 2
p annotate(geom="text", x=3, y=30, label="Scatter plot")
自动给图像添加文本标记
主要设置映射图层:geom_label() 和geom_text()
R语言之可视化(20)之geom_label()和geom_text() - 云 社区 - 腾讯云 (tencent.com)[1]
可以参考下面的效果和上面的链接中的教程,这里我就不再赘述了。
代码语言:javascript复制
p <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars)))
p geom_text(check_overlap = T)
代码语言:javascript复制> p <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars)))
> p geom_label()
为柱状图添加计数标记
个人感觉,比较常见的场景是:画好了柱状图,希望在柱状图上标记出相应的数字。当然先给你们展示一下效果啦:
在画图前,先提一个技巧。65-R茶话会14-柱状图用col还是bar,你可以省一点空间 (qq.com)
下面简单的对数据框操作一下:
代码语言:javascript复制iris2 <- iris
iris2$group <- sample(c("a","b","c"), 150, replace = T)
head(iris2)
ggplot(iris2) geom_bar(aes(Species, fill = group),
position = "dodge")
iris2_count <- iris2 %>%
group_by(Species, group) %>%
summarise(count = n())
iris2_count
对转换后的数据框作图:
代码语言:javascript复制ggplot(iris2_count, aes(Species, count, fill = group))
geom_col(position = "dodge")
geom_text(aes(label = count), position = position_dodge(0.9), vjust = -0.8)
这里有个知识点,我们需要在全局指定分组,因为geom_text 图形映射不会受到fill 属性干扰,所以我直接全局指定了分组;你也可以单独对其指定label 映射。并且需要按照col 也使用dodge 的位置。
如果不指定分组或dodge:
代码语言:javascript复制ggplot(iris2_count, aes(Species, count, fill = group))
geom_col(position = "dodge")
geom_text(aes(label = count), position = position_dodge(0.9), vjust = -0.8)
耍个酷
你们想不想画出来下面的这张图呢?
或者这张?
买冰淇淋给我,我就考虑一下。挑个时间,教你们一下吧。
参考资料
[1]R语言之可视化(20)之geom_label()和geom_text() - 云 社区 - 腾讯云 (tencent.com): https://cloud.tencent.com/developer/article/1394482