将十六进制字符串值硬编码为 ggplot 中的颜色
Hardcode hexadecimal string values as color in ggplot
我有一个数据框,其中 "x" 和 "y" 列作为数值,第三列 "cluster" 作为十六进制字符串,示例如下:
library(ggplot2)
library(scales)
colList = c(scales::hue_pal()(3),"#520090")
dat = data.frame(x=runif(100,0,1),y=runif(100,0,1),cluster=sample(1:4, 100, replace=T))
dat$cluster = factor(dat$cluster)
levels(dat$cluster) = c(colList)
head(dat)
我正在尝试创建一个散点图,其中 "x" 和 "y" 列映射到 x 和 y 轴,并且这些点根据 [=23= 中存储的十六进制值着色] 柱子。我尝试了以下方法:
ggplot(dat,aes(x,y))+ geom_point(aes(colour = cluster), alpha=0.5)
但是,这只是分配存储在 scales::hue_pal()(4) 中的默认前四个值,我已将最后一个值更改为十六进制值 #520090 的深紫色。我还试图更改默认的十六进制值,使其不显示为图例中的文本。我尝试在 "Cluster 1"、"Cluster 2"、...、"Cluster 4" 中硬编码为图例文本,但没有成功:
ggplot(dat,aes(x,y))+ geom_point(aes(colour = cluster), alpha=0.5) + theme(legend.text = element_text("Cluster 1","Cluster 2","Cluster 3","Cluster 4"))
非常感谢任何建议!
为了根据集群标识为点着色,需要将集群名称(即您的十六进制值)映射到一组美学值。
由于您希望簇列中的十六进制值代表实际颜色,您可以使用 scale_color_manual 函数并将簇列的级别作为值参数。
要更改标签,只需设置所需的标签值即可。
ggplot(dat, aes(x,y)) + geom_point(aes(colour = cluster), alpha=0.5) +
scale_color_manual(values = levels(dat$cluster),
labels = c("Cluster1","Cluster2","Cluster3", "Cluster4"))
我有一个数据框,其中 "x" 和 "y" 列作为数值,第三列 "cluster" 作为十六进制字符串,示例如下:
library(ggplot2)
library(scales)
colList = c(scales::hue_pal()(3),"#520090")
dat = data.frame(x=runif(100,0,1),y=runif(100,0,1),cluster=sample(1:4, 100, replace=T))
dat$cluster = factor(dat$cluster)
levels(dat$cluster) = c(colList)
head(dat)
我正在尝试创建一个散点图,其中 "x" 和 "y" 列映射到 x 和 y 轴,并且这些点根据 [=23= 中存储的十六进制值着色] 柱子。我尝试了以下方法:
ggplot(dat,aes(x,y))+ geom_point(aes(colour = cluster), alpha=0.5)
但是,这只是分配存储在 scales::hue_pal()(4) 中的默认前四个值,我已将最后一个值更改为十六进制值 #520090 的深紫色。我还试图更改默认的十六进制值,使其不显示为图例中的文本。我尝试在 "Cluster 1"、"Cluster 2"、...、"Cluster 4" 中硬编码为图例文本,但没有成功:
ggplot(dat,aes(x,y))+ geom_point(aes(colour = cluster), alpha=0.5) + theme(legend.text = element_text("Cluster 1","Cluster 2","Cluster 3","Cluster 4"))
非常感谢任何建议!
为了根据集群标识为点着色,需要将集群名称(即您的十六进制值)映射到一组美学值。
由于您希望簇列中的十六进制值代表实际颜色,您可以使用 scale_color_manual 函数并将簇列的级别作为值参数。 要更改标签,只需设置所需的标签值即可。
ggplot(dat, aes(x,y)) + geom_point(aes(colour = cluster), alpha=0.5) +
scale_color_manual(values = levels(dat$cluster),
labels = c("Cluster1","Cluster2","Cluster3", "Cluster4"))