我有一个包含3列的CSV文件,X值,Y值及其对应的十六进制(#RRGGBB)值。我一直在尝试创建一个散点/气泡图,其中气泡的内部根据十六进制值着色。
symbols(year, logtrans, circles=size, inches=0.05, bg=intel2$HexLogClock)
intel2 $ HexLogClock包含十六进制值。
对于noob问题再次感到抱歉,感谢任何帮助。
答案 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"))