一个 R ggplot2 图中的多个数据点

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

【参考方案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 也是如此,必须手动缩放(不是我想要的)。

以上是关于一个 R ggplot2 图中的多个数据点的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化:可视化密度图(Density plot)可视化多个分组的密度图数据点分布在箱图中间添加主标题副标题题注信息

R语言使用ggplot2同时可视化dataframe的多个数据列实战:多个数据列可视化在同一个图中多个数据列可视化在多个图中(纵向多个子图)

R语言ggplot2可视化箱图(boxplot)自定义设置抑制箱图中异常值数据点的输出(removes boxplot outliers in the ggplot2 graph)

R语言ggplot2可视化箱图并使用线条(line)连接两个箱图中不同分组成对的数据点(Connecting Paired Points on Boxplots with ggplot2)

R语言ggplot2可视化箱图配置抖动数据点(jitter points)避免数据点互相覆盖并使用线条(line)连接两个箱图中不同分组成对的数据点(jitter on Boxplots)

R语言ggplot2可视化绘制散点图(scatter plot)使用gghighlight包突出高亮散点图中的特定数据点并添加文本标签(highlight and text annotation)