r - 如何在 r ggplot 中为 dotplot 选择正确的参数
问题描述
我打算制作一个有点像这样的点图:
但是代码有一些问题:
df = data.frame(x=runif(100))
df %>%
ggplot(aes(x )) +
geom_dotplot(binwidth =0.01, aes(fill = ..count..), stackdir = "centerwhole",dotsize=2, stackgroups = T, binpositions = "all")
如何选择 bin 宽度以避免点重叠、bin 将自身包裹在 2 列中或点在顶部和底部被截断?
为什么y轴显示小数点而不是计数?以及如何通过 x 值对点着色?我尝试了 fill = x 并且没有显示颜色。
解决方案
首先从帮助?geom_dotplot
当沿 x 轴分箱并沿 y 轴堆叠时,由于 ggplot2 的技术限制,y 轴上的数字没有意义。您可以隐藏 y 轴,如示例之一,或手动缩放它以匹配点数。
因此,您可以尝试关注。请注意,着色不完全适合 x 轴。
library(tidyverse)
df %>%
ggplot(aes(x)) +
geom_dotplot(stackdir = "down",dotsize=0.8,
fill = colorRampPalette(c("blue", "white", "red"))(100)) +
scale_y_continuous(labels = c(0,10), breaks = c(0,-0.4)) +
scale_x_continuous(position = "top") +
theme_classic()
为了正确着色,您必须使用例如自己计算垃圾箱.bincode
:
df %>%
mutate(gr=with(.,.bincode(x ,breaks = seq(0,1,1/30)))) %>%
mutate(gr2=factor(gr,levels = 1:30, labels = colorRampPalette(c("blue", "white", "red"))(30))) %>%
arrange(x) %>%
{ggplot(data=.,aes(x)) +
geom_dotplot(stackdir = "down",dotsize=0.8,
fill = .$gr2) +
scale_y_continuous(labels = c(0,10), breaks = c(0,-0.4)) +
scale_x_continuous(position = "top") +
theme_classic()}
推荐阅读
- amazon-web-services - 如何在 AWS 秘密管理器中重命名/更新秘密的阶段标签 - java
- javascript - 路线航点线在地图完成后未正确显示
- python - 在Python中将excel工作表从一个工作表复制到另一个工作表
- c - 我的浮动值与我在 C 中的值不匹配
- google-chrome - 如何将请求从浏览器传递到外部应用程序
- java - Spring/JUnit/Mockito:如何将带有 @Value 注释的值注入到模拟 bean 中?
- javascript - 将范围分配给要操作的变量时遇到问题
- mysql - Cordapp-未找到 MySql ConnectionPoolDataSource 的 Hikari 连接池类
- python - 只有在第一个函数设置全局标志后才完成响应
- php - 会话第一次不起作用,但第二次起作用