我有一个 CSV 文件,其中包含 3 列、X 值、Y 值及其对应的十六进制 (#RRGGBB) 值。我一直在尝试创建一个散点图/气泡图,其中气泡的内部根据十六进制值着色。
symbols(year, logtrans, circles=size, inches=0.05, bg=intel2$HexLogClock)
intel2$HexLogClock 包含十六进制值。
再次抱歉这个菜鸟问题,任何帮助表示赞赏。
我认为您的问题可能在于十六进制值不是字符。确保他们是第一位的。请参见下面的示例:
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)
我想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))
我想我误解了,如果是这样,请告诉我,但您可以提供十六进制值,col
如下所示:
barplot(1:3, axes=FALSE, col=c("#330000", "#FFFFCC", "660000"))