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