gpt4 book ai didi

r - ggplot错误的颜色分配

转载 作者:行者123 更新时间:2023-12-04 11:09:25 24 4
gpt4 key购买 nike

我实现了以下函数来绘制 ggplot 使用的不同颜色。它们的功能还绘制图例中的十六进制颜色值。但是,不知何故,颜色和十六进制值的分配是错误的,我不明白为什么。在将十六进制颜色添加到数据框之前,我对其进行了排序 data然后在 ggplot2 函数中使用。我认为这会解决问题,但事实并非如此。我还创建了矢量 col它包含十六进制以及我实际上想要作为图例的 rgb 颜色值,但我也在努力让它工作

ggplot_colors <- function(n, size=8, alpha=1) {
library(grDevices)
hues = seq(15, 375, length=n+1)
cols_hex <- sort(hcl(h=hues, l=65, c=100)[1:n])
cols_rgb <- col2rgb(cols_hex)
cols_rgb <- apply(cols_rgb, 2, function(x){paste(x, collapse=",")})
cols <- paste(cols_hex, cols_rgb, sep="; ")
data <- data.frame(x=1:length(cols),
y=1:length(cols),
cols_hex=cols_hex,
cols_rgb=cols_rgb,
cols=cols)
ggplot(NULL) +
geom_point(data=data,
aes(x=x, y=y, colour=cols_hex), size=size, alpha=alpha)
}

ggplot_colors(15, 8, 1)

enter image description here

作为 (248, 118, 109) 的 RGB 值和 F8766D 的十六进制值的红色在图例中被分配了 00B0F6 的十六进制值

最佳答案

因为您想为参数提供颜色名称 colour=并显示此参数的图例,您应该添加 scale_colour_identity()到函数中的最后一行。此比例确保提供的值将被解释为实际颜色值。添加参数 breaks=cols_hex在函数中 scale()将确保图例中名称的顺序。

ggplot(NULL) +     
geom_point(data=data, aes(x=x, y=y, colour=cols_hex), size=size, alpha=alpha) +
scale_colour_identity(guide="legend",breaks=cols_hex)

enter image description here

关于r - ggplot错误的颜色分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14934522/

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