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


可以在

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

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

我在这里找到了这段代码 堆栈溢出帖子

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")
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")

然后,我将使用reshape2包中的melt

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中,我设置了控制我情节不同部分的事物的名称。 圆点按国家/地区着色,并按值调整大小。 但是如果你愿意,你可以改变这一切。

但是,我不知道这是否是您要进行的比较!

最新更新