生成散点图,其中点的大小根据第三个变量而变化

时间:2012-06-20 18:12:38

标签: r excel excel-vba vba

可以在R中生成一个图表,用于表示每年的文档数量的点的大小。我试图在Excel中使用散点图生成这样的图形,但没有用。

我知道这可以使用R中的世界地图和地图气泡来完成,但如果它只能在没有世界地图的图表中完成,那将非常有用。

我在这里找到了这段代码StackOverFlow Post

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.25, bg=intel2$HexLogClock) 

我希望能够制作这个数字,但是根据每年的价值来改变圆圈的大小。

干杯, 杰斯

示例数据集(抱歉格式化)

Country Year 2008   Year 2009 Year 2010 Year 2011
Argentina   35  60  89  120
Austrailia  56  89  75  100
Canada            25    65  89  148
Ireland 25  65  90  200
Italy             27    75  45  100
New Zealand 56  98  36  54
Spain             78    54  100 89
United Kingdom  56  102 158 238
United States   45  99  179 250

我希望能够使用上面的TXT文件执行此操作我使用命令读取数据!

 myData3 <- read.delim(file="noofpublications_Collab2.txt", header = TRUE, sep = "\t")

1 个答案:

答案 0 :(得分:2)

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

通常你会使用data.frame:

DF <- data.frame(year, logtrans, color=intel2$HexLogClock)

然后对symbols的调用变为:

symbols(DF$year, DF$logtrans, circles=DF$logtrans, inches=0.25, bg=DF$color) 

这也可以在一个更高级的绘图库中完成。我的偏好是ggplot2

library(ggplot2)
ggplot(DF, aes(x=year, y=logtrans, colour=color, size=logtrans)) + geom_point()\\

根据OP的评论和编辑,

重新创建部分数据:

dat <- structure(list(country = c("argentina", "australia", "canada", "ireland", "italy"), year08 = c(35, 56, 25, 25, 27), year09 = c(60, 89, 65, 65, 75), year10 = c(89, 75, 89, 90, 45), year11 = c(120, 100, 148, 200, 100)), .Names = c("country", "year08", "year09", "year10", "year11"), row.names = c(NA, -5L), class = "data.frame")

然后我会使用melt包中的reshape2

library(reshape2)
dat.melt <- melt(dat, id.var='country')

然后用ggplot绘图:

ggplot(dat.melt, aes(x=variable, y=value, colour=country, size=value)) + geom_point()

aes中,我设置了控制不同情节的东西的名称。点按国家/地区着色,并按值调整大小。但是如果你选择的话,你可以全部切换。

但是,我不知道这是你想要做的比较!