我打算做一个像这样的点图:
但代码存在一些问题:
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")
如何选择纸盒宽度以避免点重叠,将纸盒自身包裹在2列或点中的纸盒会在顶部和底部被截断?
为什么y轴显示小数点而不是计数?以及如何用x值对点进行着色?我试过fill = x并且没有显示颜色。
答案 0 :(得分:3)
首先在?geom_dotplot
沿x轴进行装箱并沿y轴堆叠时, 由于技术限制,y轴上的数字没有意义 GGPLOT2。您可以隐藏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()}
答案 1 :(得分:3)
重叠是由dotsize
>引起的。 1;正如@Jimbuo所说,y轴上的十进制值是由于这个geom的内部结构;对于fill
和color
,您可以使用..x..
计算变量:
计算变量
x 每个垃圾箱的中心,如果binaxis是" x"
df = data.frame(x=runif(1000))
library(dplyr)
library(ggplot2)
df %>%
ggplot(aes(x, fill = ..x.., color = ..x..)) +
geom_dotplot(method = 'histodot',
binwidth = 0.01,
stackdir = "down",
stackgroups = T,
binpositions = "all") +
scale_fill_gradientn('', colours = c('#5185FB', '#9BCFFD', '#DFDFDF', '#FF0000'), labels = c(0, 1), breaks = c(0,1), guide = guide_legend('')) +
scale_color_gradientn(colours = c('#5185FB', '#9BCFFD', '#DFDFDF', '#FF0000'), labels = c(0, 1), breaks = c(0,1), guide = guide_legend('')) +
scale_y_continuous() +
scale_x_continuous('', position = 'top') +
# coord_equal(ratio = .25) +
theme_classic() +
theme(axis.line = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank(),
aspect.ratio = .25,
legend.position = 'bottom',
legend.direction = 'vertical'
)
由reprex package(v0.2.0)创建于2018-05-18。