gpt4 book ai didi

r - ggplot2 多个 stat_binhex() 图在一张图像中具有不同的颜色渐变

转载 作者:行者123 更新时间:2023-12-04 01:54:48 25 4
gpt4 key购买 nike

我想使用 ggplot2 的 stat_binhex() 在同一个图表上同时绘制两个自变量,每个变量都有自己的颜色渐变,使用 scale_colour_gradientn()。

如果我们忽略 x 轴单位不匹配的事实,一个可重复的示例是在同一图像中绘制以下内容,同时保持单独的填充渐变。

d <- ggplot(diamonds, aes(x=carat,y=price))+
stat_binhex(colour="white",na.rm=TRUE)+
scale_fill_gradientn(colours=c("white","blue"),name = "Frequency",na.value=NA)
try(ggsave(plot=d,filename=<some file>,height=6,width=8))

enter image description here
d <- ggplot(diamonds, aes(x=depth,y=price))+
stat_binhex(colour="white",na.rm=TRUE)+
scale_fill_gradientn(colours=c("yellow","black"),name = "Frequency",na.value=NA)
try(ggsave(plot=d,filename=<some other file>,height=6,width=8))

enter image description here

我在 ggplot2 谷歌群组中发现了一些相关问题的对话 here .

最佳答案

这是另一种可能的解决方案:我采用了@mnel 将 bin 计数映射到 alpha 透明度的想法,并且我已经转换了 x 变量,以便它们可以绘制在相同的轴上。

library(ggplot2)

# Transforms range of data to 0, 1.
rangeTransform = function(x) (x - min(x)) / (max(x) - min(x))

dat = diamonds
dat$norm_carat = rangeTransform(dat$carat)
dat$norm_depth = rangeTransform(dat$depth)

p1 = ggplot(data=dat) +
theme_bw() +
stat_binhex(aes(x=norm_carat, y=price, alpha=..count..), fill="#002BFF") +
stat_binhex(aes(x=norm_depth, y=price, alpha=..count..), fill="#FFD500") +
guides(fill=FALSE, alpha=FALSE) +
xlab("Range Transformed Units")

ggsave(plot=p1, filename="plot_1.png", height=5, width=5)

想法:
  • 我尝试(但失败)显示合理的颜色/alpha 图例。看起来很棘手,但考虑到 ggplot2 的所有图例自定义功能,应该是可能的。
  • X 轴单元标记需要某种解决方案。许多人不赞成在一个轴上绘制两组单位,而 ggplot2 没有这样的功能。
  • 在此示例中,对具有重叠颜色的单元格的解释似乎很清楚,但根据所使用的数据集和所选颜色可能会变得非常困惑。
  • 如果这两种颜色是相加的互补色,那么无论它们如何重叠,您都会看到中性灰色。在重叠不相等的地方,灰色会变成更黄或更蓝的颜色。从灰色重叠单元格的略粉红色色调来看,我的颜色不是很互补。

  • enter image description here

    关于r - ggplot2 多个 stat_binhex() 图在一张图像中具有不同的颜色渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13167531/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com