带有十六进制颜色的R散点图

时间:2012-04-20 00:00:41

标签: r colors hex factors

我有一个包含3列的CSV文件,X值,Y值及其对应的十六进制(#RRGGBB)值。我一直在尝试创建一个散点/气泡图,其中气泡的内部根据十六进制值着色。

symbols(year, logtrans, circles=size, inches=0.05, bg=intel2$HexLogClock)

intel2 $ HexLogClock包含十六进制值。

对于noob问题再次感到抱歉,感谢任何帮助。

3 个答案:

答案 0 :(得分:8)

我认为你的麻烦可能在于十六进制值不是一个角色。确保它们是第一个。见下面的例子:

year <- 1:5
logtrans <- log(year)
size <- rep(15,5)
intel2 <- data.frame(HexLogClock=c("#330000", "#FFFFCC", "#660000", "#FF0000", "#00FF00"),stringsAsFactors=FALSE)
symbols(year, logtrans, circles=size, inches=0.05, bg=intel2$HexLogClock)

注意stringsAsFactors=FALSE代码,您可以为read.csv和其他导入方法指定代码,以确保您的角色数据不会转换为因子。

您可以使用以下方式为您的数据执行此操作:

intel2$HexLogClock <- as.character(intel2$HexLogClock)

答案 1 :(得分:2)

我认为intel2$HexLogClock存储为factor。使用class(intel2$HexLogClock)确认。在这种情况下,因子的每个级别由整数(根据因子级别的第一次出现的顺序分配)表示,因此您的第一个HexLogClock颜色将是黑色(1 =黑色),然后是红色,然后是绿色,蓝色,青色等。

要更正此问题,您需要将intel2$HexLogClock转换为字符向量,因此:

intel2$HexLogClock <- as.character(intel2$HexLogClock)

之后你的命令应该像你预期的那样工作。

可替换地:

symbols(year, logtrans, circles=size, inches=0.05, 
        bg=as.character(intel2$HexLogClock))

答案 2 :(得分:1)

我认为我是误会,如果是这样,请告诉我,但你可以提供十六进制值到col,如下所示:

barplot(1:3, axes=FALSE, col=c("#330000", "#FFFFCC", "660000"))