2012-04-20 78 views
3

我有一個CSV文件,包含3列,X值,Y值及其相應的十六進制值(#RRGGBB)。我一直在嘗試創建一個散點圖/氣泡圖,氣泡的內部根據十六進制值進行着色。R十六進制散點圖

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

intel2 $ HexLogClock包含十六進制值。

對不起noob問題,任何幫助表示讚賞。

+3

你得到一個錯誤?或意外的結果? – 2012-04-20 00:08:20

+1

顏色看起來是隨機的。我從#FF0000(紅色)到#FFFF00(黃色)的比例自己寫出顏色,出現的顏色遍佈圖表。使用熱托盤可能更容易,但我無法弄清楚如何根據第三個變量來選擇顏色。 – Richard 2012-04-20 00:14:06

+1

聽起來好像根本沒有問題。您的顏色值可能會被排序,但您的年份和/或logtrans值可能根本不會。所以這些觀點可能真的是一團糟的顏色。 – 2012-04-20 00:19:22

回答

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

我相信你必須爲傑夫的偵探工作+1和+1問題。 – 2012-04-20 00:22:23

+0

@TylerRinker我相信這是正確的,並且已經這樣做了。 :-) – thelatemail 2012-04-20 00:28:10

+0

唉,打我吧;) – jbaums 2012-04-20 00:30:45

0

我覺得我的誤解,如果是的話讓我知道,但你可以只提供十六進制值來col爲:

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

你會如何做到這一點與我試圖通過它的參數?我對R真的很陌生,並沒有完全理解col參數。文件不是很清楚。但是,是的,顏色以與x和y參數相同大小的矢量格式存儲。 – Richard 2012-04-20 00:10:43

2

我想象intel2$HexLogClock存儲爲factor。通過class(intel2$HexLogClock)確認。在這種情況下,係數的每個級別都由一個整數表示(根據因子級別的第一個出現次序分配),因此您的第一個顏色將是黑色(1 =黑色),然後是紅色,然後是綠色,藍色,青色等等。

要糾正這一點,你需要intel2$HexLogClock轉換爲字符向量,所以:

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

之後,你的預期你的命令應該工作。

或者:

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

+1瞭解更多信息,這些信息將對未來的搜索者有用! – thelatemail 2012-04-20 00:35:36