【问题标题】:Produce a scatterplot where the size of a point changes according to a third variable生成散点图,其中点的大小根据第三个变量而变化
【发布时间】:2012-06-20 18:12:37
【问题描述】:

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

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

我在这里找到了这段代码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")

【问题讨论】:

  • 你能提供你的数据样本吗?没有这个,我们能给出的唯一答案是:“是的,你可以做你所要求的。”
  • 将在上面添加一个示例txt文件:)

标签: r excel vba


【解决方案1】:
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 中,我设置了控制我的情节不同部分的事物的名称。这些点按国家/地区着色,并按值大小。但是,如果您愿意,您可以随意切换。

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

【讨论】:

  • 那么使用我上面包含的表格,您将如何做到这一点?
  • 圆的大小可以改吗?取决于如上所示的国家或年份?
  • 如何使用带有我包含的数据文件的TXT导入数据,因为这也很有用:)
  • @JessSheasby 这应该是另一个问题,或者更好的是,您可以自己解决问题,但您将使用read.tableread.csv
  • 对于我希望在图表上只显示一个国家而不是几个国家或仅在一年内显示的情节是我希望进行的比较:) 你会怎么做?跨度>
猜你喜欢
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 2020-09-30
相关资源
最近更新 更多