【问题标题】:Multiple data points in one R ggplot2 plot一个 R ggplot2 图中的多个数据点
【发布时间】:2010-12-05 10:37:28
【问题描述】:

我有两组数据点,它们都与同一个主轴相关,但次轴不同。有没有办法使用ggplot2在R中将它们相互绘制?

我正在寻找的基本上是这样的:

4+ | | X 。 + 220 3+。 . | | x | 2+。 + 210 | x | 1+。 x x | | + 200 0+-+-+-+-+-+-+ 时间 .温度 x 汽车销售

(这只是可能数据的示例)

【问题讨论】:

    标签: r graph ggplot2


    【解决方案1】:

    Shane 的回答“你不能在 ggplot2 中”是正确的,如果不完整的话。可以说,这不是您想要做的事情。你如何决定如何缩放 Y 轴?您希望线条的方式相同吗?范围?没有原则性的方法,而且很容易让结果看起来像你想要的任何东西。相反,您可能想要做的,尤其是在这样的时间序列中,是规范两行数据,以便在特定的 t 值下,通常是 min(t),Y1 = Y2 = 100。这是一个例子我取消了Bonddad Blog(不使用ggplot2,这就是它难看的原因!)但是你可以清楚地分辨出两条线的相对增加和减少,它们具有完全不同的底层尺度。

    【讨论】:

    • 我想这是一个很好的观点。我一直在寻找的是获得情节的快速方法,而不是获得出版质量情节的方法。我想使用一些常见的缩放比例会是一个更好的主意。我唯一的问题是,这种缩放似乎需要人工交互;我很可能必须根据情况决定这种缩放比例。
    【解决方案2】:

    我不是这方面的专家,但据我了解,这对于 lattice 是可能的,但对于 ggplot2 是不可能的。 See this leanr blog post 以获取第二轴图的示例。 Also see Hadley's response to this question

    这是一个如何在 lattice 中执行的示例(来自Gabor Grothendieck):

    library(lattice)
    library(grid)  # needed for grid.text
    
    # data
    
    Lines.raw <- "Date  Fo  Co
    6/27/2007  57.1  13.9
    6/28/2007  57.7  14.3
    6/29/2007  57.8  14.3
    6/30/2007  57  13.9
    7/1/2007  57.1  13.9
    7/2/2007  57.2  14.0
    7/3/2007  57.3  14.1
    7/4/2007  57.6  14.2
    7/5/2007  58  14.4
    7/6/2007  58.1  14.5
    7/7/2007  58.2  14.6
    7/8/2007  58.4  14.7
    7/9/2007    58.7 14.8
    "
    
    # in reality next stmt would be DF <- read.table("myfile.dat", header = TRUE)
    DF <- read.table(textConnection(Lines.raw), header = TRUE)
    DF$Date <- as.Date(DF$Date, "%m/%d/%Y")
    
    par.settings <- list(
            layout.widths = list(left.padding = 10, right.padding = 10),
            layout.heights = list(bottom.padding = 10, top.padding = 10)
    )
    
    xyplot(Co ~ Date, DF, default.scales = list(y = list(relation = "free")),
            ylab = "C", par.settings = par.settings)
    
    trellis.focus("panel", 1, 1, clip.off = TRUE)
      pr <- pretty(DF$Fo)
      at <- 5/9 * (pr - 32)
      panel.axis("right", at = at, lab = pr, outside = TRUE)
      grid.text("F", x = 1.1, rot = 90) # right y axis label
    trellis.unfocus()
    

    【讨论】:

    • 好的,我可以看到它还没有被完全支持(或者,你必须执行一些技巧才能让它工作)。我想说的是,lattice 也是如此,必须手动缩放(不是我想要的)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多