有一个看起来像
的向量c(50,-20,30,40,-70,3,9,-8,9)->h
有一个我有颜色的矢量
c("#ADCD00","#008B00","#00FF00","#ADCD00")->cols
我知道点1-3有第一种颜色,然后4有第三种颜色,5有2种颜色,其余6种有最后颜色。
如何在没有硬编码的情况下告诉R绘制这些颜色的点?这样我就可以在颜色向量中索引
plot(h,col=cols[1])
显然将所有颜色都涂成相同的颜色
答案 0 :(得分:0)
创建一个颜色地图矢量,将h
中的每个点与cols
中的颜色索引相关联。
它与h
的长度相同,以NA
值初始化:
> cmap = rep(NA,length(h))
现在按照你的方案填写:
> cmap[1:3]=1
> cmap[4]=3
> cmap[5]=2
> cmap[6:length(h)]=4
> cmap
[1] 1 1 1 3 2 4 4 4 4
然后绘制,通过颜色图查找颜色:
> plot(h, col=cols[cmap])
我不确定你所关注的“不硬编码”的确切位置,因为我构建的彩色地图矢量必须存在于某个地方,并且必须在某种意义上“硬编码”。你的意思是没有希望看到:
> plot(h, col=c("#123456","#123456",.....etc...))
将颜色硬编码到plot
函数中?
答案 1 :(得分:0)
这是一个ggplot2
解决方案。您可能希望选择不同的颜色,以使这些点区分更多
h <- c(50,-20,30,40,-70,3,9,-8,9)
xaxis <- seq(1,9)
color <- c("one", "one", "one", "third", "second", "fourth", "fourth", "fourth", "fourth")
df <- data.frame(x = xaxis, y = h, color = color)
df
ggplot(df, aes(x=x, y=y, fill=color)) +
geom_point(size = 6, shape = 22) +
scale_fill_manual(values = c("#ADCD00","#008B00","#00FF00","#ADCD00"), guide = FALSE) +
ggtitle("Points Colored Individually")