【问题标题】:Melt issues resulting in incorrect plot熔化问题导致不正确的情节
【发布时间】:2021-10-29 06:18:36
【问题描述】:

尝试使用 ggplot2 在一张图上绘制多条曲线。 x 轴表示波长,y 轴表示强度。

数据表(称为“集合”)如下所示(col2 指第 2 列等),波长从 3600 到 8000 波数。 col1, 2, 3 中的每一个都有不同的值,导致不同的曲线。这些列提供强度值。

波长 col1 col2 col3

melted 语法可以在下面找到。

    df<-data.table(Set)
    melted <- melt(df, id.vars = NULL, measure.vars=colnames(df), 
variable.name = "wavelength", value.name = "value")
wavelength  value

1:波长 3600.809

2:波长 3601.637

绘制,

    ggplot(
      plot_input[wavelength %in% c("col1", "col2", "col3”)],
      aes(y=value, x=wavelength)) + 
      geom_line() + 
      theme_classic()

问题——

2 ggplot 输出 [per image] 产生三条垂直线,我试图为 col1、col2、col3 中的每一个绘制三条不同的曲线

2ggplot – 在 x 轴上寻找波数,而不是 col_num

我可能遗漏了一些非常简单的东西。有人可以解释我做错了什么吗?

谢谢。

[添加了附加图像,质量差的 apols]。显示了 5 个光谱,以颜色显示。数据包含在列中 - y 值]

【问题讨论】:

  • 您可以添加dput(head(Set,100)) 命令的输出,让我们讨论您的数据吗?
  • > dput((head(Set, 100))) 结构(list(X1 = "col1", X2 = "col2", X3 = "col3"), row.names = 1L, class= "data.frame")
  • 我如你所愿更新了我的答案。

标签: r ggplot2 melt


【解决方案1】:

主要问题是图中的 x 轴代表什么?

现在我认为这是您希望看到的

library(data.table)
library(tidyverse)

set.seed(1453)

Set <- data.frame(col1=sample(6000:7000,size = 20,replace = T),
                 col2=sample(6000:7000,size = 20,replace = T),
                 col3=sample(6000:7000,size = 20,replace = T))

df <- data.table(Set)

melted <- melt(df, id.vars = NULL, measure.vars=colnames(df), 
variable.name = "wavelength", value.name = "value")

melted %>%
ggplot(aes(x=value,color=wavelength))+
geom_density()

【讨论】:

  • 谢谢你,我举的例子就是为了说明这一点。我要绘制大约 100 列数据(以说明特定功能)。 y 数据是各列中数据的(信号)强度,每列数
  • @Screamh 好的,我更新了这个,我的意思是 x 轴应该代表什么。
  • Samet,x 轴是波长的倒数,从大约 3600 到 8000 个波数。
  • @Screamh 好的,y 轴呢?
  • y数据是各列数据的(信号)强度,每列数
猜你喜欢
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
相关资源
最近更新 更多