相关疑难解决方法(0)

在同一图表上使用ggplot2将两个变量绘制为线条

这是一个非常新的问题,但我说有这样的数据:

test_data <-
  data.frame(
    var0 = 100 + c(0, cumsum(runif(49, -20, 20))),
    var1 = 150 + c(0, cumsum(runif(49, -10, 10))),
    date = seq(as.Date("2002-01-01"), by="1 month", length.out=100)
  )
Run Code Online (Sandbox Code Playgroud)

如何在x轴上使用?绘制时间序列var0var1同一图表?奖励积分,如果你做和不同的颜色,并且可以包括一个传奇!dateggplot2var0var1

我确信这很简单,但我找不到任何例子.

r graph time-series ggplot2 r-faq

293
推荐指数
5
解决办法
43万
查看次数

ggplot:aes vs aes_string,或者如何以编程方式指定列名?

我们假设我们有以下数据框

data <- data.frame(time=1:10, y1=runif(10), y2=runif(10), y3=runif(10))
Run Code Online (Sandbox Code Playgroud)

我们想创建一个这样的情节:

p <- ggplot(data, aes(x=time))
p <- p + geom_line(aes(y=y1, colour="y1"))
p <- p + geom_line(aes(y=y2, colour="y2"))
p <- p + geom_line(aes(y=y3, colour="y3"))
plot(p)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,如果我们有更多的"y"列,我们不知道它们的确切名称.这提出了一个问题:我们如何以编程方式迭代所有列,并将它们添加到绘图中?基本上目标是:

otherFeatures <- names(data)[-1]
for (f in otherFeatures) {
  # what goes here?
}
Run Code Online (Sandbox Code Playgroud)

尝试失败

到目前为止,我发现许多方法都行不通.例如(以下所有示例仅显示上面for循环中的代码行):

我的第一次尝试只是使用aes_string而不是aes为了通过循环变量指定列名f:

p <- p + geom_line(aes_string(y=f, colour=f))
Run Code Online (Sandbox Code Playgroud)

但这并没有给出相同的结果,因为现在colour不会是每行的固定颜色(aes_stringf在数据框环境中解释).因此,图例将变为颜色条,并且不包含不同的列名.我的下一个猜测是混合,aesaes_string试图设置colour为固定字符串:

p <- p + geom_line(aes_string(y=f), aes(colour=f))
Run Code Online (Sandbox Code Playgroud)

但这导致了 …

plot r ggplot2

9
推荐指数
1
解决办法
3054
查看次数

R:处理和绘制分组数据

这是关于这一点的后续问题:R:在一个图中绘制多行

在那里,我使用了部分数据来绘制多行图形图.现在我想在一个网格中绘制多个图形,因为我已经对数据进行了分组.现在我这样做是为每组数据创建数据帧,然后为每个数据帧创建一个图表并将它们组合使用gridd.arrange() 但是,我想知道我是否可以将分组数据作为1个数据集处理,而不是创建所有这些单独的表?

我的数据结构如下:

          Category1    Category2    Category3
Company   2011   2013  2011   2013  2011   2013
Company1  300    350   290    300   295    290
Company2  320    430   305    301   300    400
Company3  310    420   400    305   400    410
Run Code Online (Sandbox Code Playgroud)

那么有没有办法立即处理这个问题并绘制3个图表(每个类别)以及每个公司的年度(2011年和2013年)?

r ggplot2

4
推荐指数
1
解决办法
8524
查看次数

与R的线图

这不应该是这么难,但我被困住了.我有一个以下表格的表格:

        |   1     |   2    |   3
  ------------------------------------
  TypeA |  3213   |  2121  |   43    
  TypeB |  31321  |  321   |   10
  TypeC |  332    |   11   |   9
Run Code Online (Sandbox Code Playgroud)

我想生成一条线图,有三条线:每条Type一条,x坐标为"1,2,3",y坐标为数字(3213,...).我按照这里的步骤操作,但不知道如何迭代第一列.

plot r ggplot2

-1
推荐指数
1
解决办法
262
查看次数

在ggplot中绘制多行

我需要使用 ggplot 绘制不同日期的每小时数据,这是我的数据集:

在此处输入图片说明

数据由每小时观察组成,我想将每天的观察绘制成单独的一行。

这是我的代码

xbj1 = bj[c(1:24),c(1,6)]
Run Code Online (Sandbox Code Playgroud)

xbj2 = bj[c(24:47),c(1,6)] xbj3 = bj[c(48:71),c(1,6)]

ggplot()+
geom_line(data = xbj1,aes(x = Date, y= Value), colour="blue") +
geom_line(data = xbj2,aes(x = Date, y= Value), colour = "grey") + 
geom_line(data = xbj3,aes(x = Date, y= Value), colour = "green") +
xlab('Hour') +
ylab('PM2.5')
Run Code Online (Sandbox Code Playgroud)

请就此提出建议。

plot r ggplot2

-2
推荐指数
1
解决办法
916
查看次数

标签 统计

ggplot2 ×5

r ×5

plot ×3

graph ×1

r-faq ×1

time-series ×1