R ggplot:接近特定值时按密度对点进行着色?

R ggplot:接近特定值时按密度对点进行着色?,r,ggplot2,colors,points,R,Ggplot2,Colors,Points,我有一个包含1000个模型值的数据集,这些值都在相同的范围内(y=40-70),因此点重叠了一吨。我感兴趣的是使用颜色来显示聚集在单个值(y=56.72)上的点的密度,我在下面的图上用水平虚线表示了这个值。我如何给这些点上色以显示这一点 ggplot(data, aes(x=model, y=value))+ geom_point(size=1) + geom_hline(yintercept=56.72, linetype="dashed",

我有一个包含1000个模型值的数据集,这些值都在相同的范围内(y=40-70),因此点重叠了一吨。我感兴趣的是使用颜色来显示聚集在单个值(y=56.72)上的点的密度,我在下面的图上用水平虚线表示了这个值。我如何给这些点上色以显示这一点

ggplot(data, aes(x=model, y=value))+ 
geom_point(size=1) + 
geom_hline(yintercept=56.72, 
           linetype="dashed", 
            color = "black")

我建议在
geom_点
内使用
alpha
参数。您应该使用接近0的值

ggplot(data, aes(x=model, y=value)) + 
  geom_point(size=1, alpha = .1) + 
  geom_hline(yintercept=56.72, linetype="dashed", color = "black")

我认为您应该选择直方图或密度图:

n <- 500
data <- data.frame(model= rep("model",n),value =  rnorm(n,56.72,10))

ggplot(data, aes(x = value, y = after_stat(count))) +
  geom_histogram(binwidth = 1)+
  geom_density(size = 1)+
  geom_vline(xintercept = 56.72, linetype = "dashed", color = "black")+
  theme_bw()

如果您的模型是迭代的,并且确实收敛到该值,我建议您绘制迭代函数以显示收敛性。另一种选择是避开点的位置,以保持类似的绘图:

ggplot(data, aes(x = model, y = value))+ 
  geom_point(position = position_dodge2(width = 0.2),
             shape = 1,
             size = 2,
             stroke = 1,
             alpha = 0.5) + 
  geom_hline(yintercept = 56.72, linetype = "dashed", color = "black")

这是您要求的颜色密度图:

library(dplyr)
library(ggplot2)
data %>%
  mutate(bin = cut(value, breaks = 10:120)) %>%
  dplyr::group_by(bin) %>%
  mutate(density = dplyr::n()) %>%
  ggplot(aes(x = model, y = value, color = density))+ 
  geom_point(size = 1) + 
  geom_hline(yintercept = 56.72, linetype = "dashed", color = "black")+
  scale_colour_viridis_c(option = "A")

您好,我现在无法访问R。。。但作为一个开始,你可以做一些事情,比如计算某些点上的值,然后使用计数作为填充或类似的东西:)另请参见如何根据估计的密度轻松为点着色。感谢@denis提供的所有选项!颜色密度引发错误:错误:
n()
只能在dplyr谓词中使用。有解决方法吗?是的,使用
dplyr::n()
。这是因为您也加载了
plyr
library(dplyr)
library(ggplot2)
data %>%
  mutate(bin = cut(value, breaks = 10:120)) %>%
  dplyr::group_by(bin) %>%
  mutate(density = dplyr::n()) %>%
  ggplot(aes(x = model, y = value, color = density))+ 
  geom_point(size = 1) + 
  geom_hline(yintercept = 56.72, linetype = "dashed", color = "black")+
  scale_colour_viridis_c(option = "A")