繁体   English   中英

如何在 R 中使用对数刻度制作密度散点图?

[英]How can I make a density scatterplot with log scale in R?

我想在 R 中制作一个具有 log10 比例的密度散点图。我尝试在 R 中使用ggplotstat_density2d绘制它。我使用了以下代码:

ggplot(data=vod_agb_df, aes(vod, agb)) + 
       stat_density2d(aes(fill = ..density..), geom = "tile", contour = FALSE, n = 100) + 
       scale_fill_distiller(palette = 'YlOrRd', direction = 1) +
       scale_x_continuous(breaks=seq(0, 1, 0.25), limits = c(0, 1)) + 
       scale_y_continuous(breaks=seq(0, 300, 50), limits = c(0, 300)) + 
       labs(x='L-VOD', y='AGB(Mg/ha)') +
       theme_bw()

但结果看起来很奇怪。 我的代码的密度散点图

这是我要绘制的情节
原始散点图

您可以log10密度; 这是一个最小且可重复的示例

library(MASS)
library(tidyverse)

set.seed(2020)
mvrnorm(100, mu = c(0, 0), Sigma = matrix(c(1, 0.5, 0.5, 1), 2, 2)) %>%
    as_tibble() %>%
    ggplot(aes(V1, V2)) + 
    stat_density2d(
        aes(fill = log10(..density..)), geom = "tile", contour = FALSE, n = 100) + 
    scale_fill_distiller(palette = 'YlOrRd', direction = 1) + 
    theme_bw()

在此处输入图片说明


更新

我不清楚你的意思是“我想在点分布区域制作密度散点图,而不是整个区域。”如果你问如何增加渐变颜色的高度酒吧,您可以执行以下操作

set.seed(2020)
mvrnorm(100, mu = c(0, 0), Sigma = matrix(c(1, 0.5, 0.5, 1), 2, 2)) %>%
    as_tibble() %>%
    ggplot(aes(V1, V2)) + 
    stat_density2d(
        aes(fill = log10(..density..)), geom = "tile", contour = FALSE, n = 100) + 
    scale_fill_distiller(palette = 'YlOrRd', direction = 1) + 
    theme_bw() + 
    guides(fill = guide_colorbar(barheight = unit(3.5, "in"), title.position = "right"))    

在此处输入图片说明

无论您显示为您的预期输出,您都可以使用以下代码

library(tidyverse)

# Bin size control + color palette
ggplot(iris, aes(x=Sepal.Length, y=Petal.Length) ) +
  geom_bin2d(bins = 20) +
  scale_fill_distiller(palette = 'YlOrRd', direction = 1) +
  theme_bw() +
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM