I've got a CSV file with 3 columns, the X values, Y values, and their corresponding hexadecimal (#RRGGBB) values. I've been trying to create a scatter/bubble plot with the insides of the bubbles colored according to the hex values.

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

intel2$HexLogClock contains the hex values.

Sorry again for the noob question, any help is appreciated.

有帮助吗?

解决方案

I think your trouble may lie in the hex values not being a character. Make sure they are first. See example below:

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)

Notice the stringsAsFactors=FALSE code, which you can specify for read.csv and other import methods to ensure your character data isn't converted to a factor.

You can do this for your data using:

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

其他提示

I imagine intel2$HexLogClock is stored as a factor. Confirm this with class(intel2$HexLogClock). In this case, each level of the factor is represented by an integer (which is assigned based on the order of factor level's first occurrences), so your first HexLogClock color will be black (1=black), then red, then green, blue, cyan, and so on.

To correct this, you need to convert intel2$HexLogClock to a character vector, thusly:

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

after which your command should work as you had expected.

Alternatively:

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

I think I'm misunderstanding, if so let me know but you can just supply the hexadecimal values to col as in:

barplot(1:3, axes=FALSE, col=c("#330000", "#FFFFCC", "660000"))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top