【问题标题】:Produce a scatter plot but using three variables生成散点图但使用三个变量
【发布时间】:2015-04-17 17:41:57
【问题描述】:

这是一个我需要制作的相当奇怪的情节,希望有人能帮助我。

我的数据是这样的:

a<-c(1760,650,1210,1670,1150,1720,1900,2010,1500,1720,1430,2090,1840)
b<-c(992,1072,1522,521,851,583,868,591,794,621,767,951,740)
min_b<-c(963,1036,1405,502,834,559,806,558,741,597,725,914,725)
max_b<-c(1042,1104,1662,543,887,619,898,635,841,646,838,1018,757)
year<-c(1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010)
data<-data.frame(a,b,min_b,max_b,year)

我生成的第一个图是a vs b,使用以下命令在图上显示minmaxb

plot(data$a, data$b)
arrows(data$a, data$min_b, data$a, data$max_b,col="black",lty=1, code=3, angle=90, length=0.1)

有什么方法可以按时间顺序(即按年份)生成此散点图。 如有任何帮助,我将不胜感激。

非常感谢

【问题讨论】:

  • 你说你希望 1998 出现“第一个”——就像动画一样?或者你想要这些在不同的情节?
  • 没有。例如,如果您要运行上述脚本,您将看到 2009 年的 a vs b 出现在 x 轴的末尾,而 1999 出现在 x 轴的开头。我想要做的是a vs b1998 首先(在x 轴上),然后a vs b1999 等等,2010 年的a vs b 出现在x-axix 的末尾。只有一个情节,没有动画。希望这更清楚
  • 您是否有效地按照时间顺序为每年的 a vs b 图表,以便轴上只有一个点?
  • 是的!!!!这就是我要找的
  • 这仍然不是很清楚,或者至少没有多大意义。您真正想在这里展示什么?

标签: r plot scatter-plot


【解决方案1】:

如果可以不使用基本图形,这个使用 facetting 的 ggplot2 版本可能会很好地为您服务

代码如下:

library(ggplot2)
# map your data to relevant axis values
ggplot(data,aes(x=a,y=b,ymin=min_b, ymax=max_b))+
# Plot you points (you can customise this)
  geom_point()+
# Plot your error bars (using ymin and ymax
  geom_errorbar()+
# split your chart by year
  facet_wrap(~year)

强制到一行

代码变成:

ggplot(data,aes(x=a,y=b,ymin=min_b, ymax=max_b))+
  geom_point()+
  geom_errorbar()+
  facet_wrap(~year,ncol = length(year))

生成的图表是:

【讨论】:

  • 非常感谢。但我只需要一个情节而不是像这样的多个情节。
  • 你能显示多大的图表?如果您有很多年,但希望能够在您的 x 轴上保持合理的比例水平,则它必须非常大。我们还有其他选择吗,比如将 b 编码为错误栏上的颜色?
  • 我给出的数据是实际数据。所以我只有 13 年。
  • 更新了我的答案,将所有内容放在一行中 - 可以对 x 轴进行一些调整以使其更具可读性,或者如果相对位置更重要,则可以完全删除这些值比绝对位置
  • 这就是我要找的。非常感谢。如果有时间,能否告诉我如何更改前 6 年的符号(可能是三角形)以及如何消除笨拙的 x 轴?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 2020-08-01
相关资源
最近更新 更多