3

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

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

intel2$HexLogClock 包含十六进制值。

再次抱歉这个菜鸟问题,任何帮助表示赞赏。

4

3 回答 3

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)
于 2012-04-20T00:19:39.867 回答
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))
于 2012-04-20T00:29:32.113 回答
1

我想我误解了,如果是这样,请告诉我,但您可以提供十六进制值,col如下所示:

barplot(1:3, axes=FALSE, col=c("#330000", "#FFFFCC", "660000"))
于 2012-04-20T00:05:57.007 回答