【问题标题】:Multiple plots with variable color in R ggplotR ggplot中具有可变颜色的多个图
【发布时间】:2015-03-27 17:52:47
【问题描述】:

我想在 R 中的同一张图上绘制多个图,并根据第三个变量对它们进行颜色编码,但我不知道如何在 ggplot2 的一个数据框中执行此操作。

例如,我的数据可能看起来像(组成的数据):

Time = [1 2 3 4 5]

YData = [10 11  9 10 12]
        [ 5  3  4  6  9]

ColorData = [2.5 2.6 2.7 2.8 2.9]
            [0.1 1.2 2.4 1.6 0.2]

我需要绘制“YData[1,] vs Time”,其中的点根据 ColorData[1,] 在某些色标上着色。然后我需要根据 ColorData[2,] 用色标上的点绘制“YData[2,] vs Time”。两个图都在同一轴上。在实践中,我的矩阵将是巨大的,所以我不能手动绘制每一件事。有什么想法可以做到这一点吗?

数据示例:

dx <- data.frame(Time = c(1, 2, 3 ,4, 5), 
                 YData1 = c(10 ,11  ,9 ,10 ,12),
                 YData2 = c(5  ,3  ,4  ,6  ,9),
                 ColorData1 = c(2.5 ,2.6 ,2.7, 2.8, 2.9),
                 ColorData2 =  c(0.1, 1.2, 2.4, 1.6, 0.2)
                 )

没有颜色的代码:

 library(reshape2)
 dx.melted = melt(dx, id = "Time")
 ggplot(data = dx.melted, aes(x = Time, y = value)) + geom_point()

【问题讨论】:

  • 您好,您的问题很简单。你能提供至少一个可重现的例子吗?
  • 我不确定你的意思。我的时间列表长度为 1000,并且我有一个用于 YData 和 ColorData 的 32x1000 矩阵,但我不知道发布这是否会有所帮助。对不起,我知道对于那些熟悉 R 的人来说这可能是一个简单的问题,但我已经看过但无法找到解决方法。我见过的最接近的事情是使用 melt() 函数绘制多个图形,但如果我也有颜色数据,这对我没有帮助。 (另外我不确定为什么我会被否决......)
  • 您可以使用有效的 R 语法呈现您的数据。更好的是在 R 中创建对象并使用dput()。本质上,现在,您要求人们复制/粘贴您的代码、添加逗号、将 [] 替换为 c() 或调用 matrix()
  • @user2520385 你被否决了(我认为),因为你没有提供一个可重复的例子并且你没有展示你迄今为止尝试过的东西。
  • 看起来@agstudy 已经为您服务了,但这是您自己做的好事。

标签: r ggplot2


【解决方案1】:

您应该在绘图之前重塑数据。通常我们使用reshape 命令将数据放入长格式。在这里,我使用的是手动方法,但通常转换您的 32 列 data.frame。

dx_reshaped <- data.frame(Time=dx[,1],
                          stack(dx[,(grep('YData',colnames(dx)))]),
                          stack(dx[,(grep('Color',colnames(dx)))]))

然后你像使用ggplot2 一样绘制它。我使用 2 个几何图形来区分(ydata 类型颜色类型)。

library(ggplot2)
ggplot(data=dx_reshaped,aes(Time,values)) +
  geom_point(aes(shape=ind),size=4) +
  geom_line(aes(color=values.1,group=ind))

【讨论】:

    猜你喜欢
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多