2013-02-18 131 views
1

我有一張帶3個數字柱的表格。其中兩個是座標,第三個是顏色。我的文本文件中有數百行。 我想製作一張照片,其中第一個數字表示每個點的座標,第三個是該點的顏色。更大的數字 - 更黑的點。 我怎麼能這樣做?在我的文件中的行 的例子:R中的彩色點數

99.421875 48.921875 0.000362286050144 
+0

究竟是什麼你再次密謀?我仍然不清楚。 – Arun 2013-02-18 12:11:11

+0

我想製作一個點圖,其中我的文件中的第一列是X,第二個是Y,第三個是點的顏色。當第三個數字較小時,該點應該較輕,當該點較大時,該點爲暗紅色,例如 – user2080209 2013-02-18 12:15:21

+0

您是在尋找基礎解決方案還是「ggplot2」還好嗎? – Arun 2013-02-18 12:32:04

回答

0

請問這樣做?

require(ggplot2) 
# assuming your data is in df and x,y, and col are the column names. 
ggplot(data = df, aes(x = x, y = y)) + 
      geom_point(colour="red", size = 3, aes(alpha=col)) 

# sample data 

set.seed(45) 
df <- data.frame(x=runif(100)*sample(1:10, 100, replace=T), 
       y= runif(100*sample(1:50, 100, replace=T)), 
       col=runif(100/sample(1:100))) 

簡介:

ggplot2_alpha

+0

非常感謝! – user2080209 2013-02-18 13:04:26

0

一個lattice解決方案:

library(lattice) 
mydata <- matrix(c(1,2,3,1,1,1,2,5,10),nrow=3) 
xyplot(mydata[,2] ~ mydata[,1], col = mydata[,3], pch= 19 , 
          alpha = (mydata[,3]/10), cex = 15) 

alpha這裏控制透明度。

enter image description here

0

這裏是一個基礎R溶液:

##Generate data 
##Here z lies between 0 and 10 
dd = data.frame(x = runif(100), y= runif(100), z= runif(100, 0, 10)) 

第一正規化Z:

dd$z = dd$z- min(dd$z) 
dd$z = dd$z/max(dd$z) 

然後使用尺寸爲正常繪製的z爲s哈丁:使用基...改變顏色

##See ?gray for other colour combinations 
##pch=19 gives solid points. See ?point for other shapes 
plot(dd$x, dd$y, col=gray(dd$z), pch=19) 

enter image description here

+0

非常感謝! – user2080209 2013-02-18 13:04:50

0

另一種解決方案,可以取代一些數據[3]爲0的內部rgb()

n <- 1000 
data <- data.frame(x=runif(n),y=runif(n),col=runif(n)) 
plot(data[,1:2],col=rgb(data[,3],data[,3],data[,3],maxColorValue = max(data[,3])),pch=20)