【问题标题】:How can I plot a spectra without using any package?如何在不使用任何软件包的情况下绘制光谱?
【发布时间】:2015-05-31 06:24:28
【问题描述】:

我一直在尝试绘制光谱图,但没有成功。

我拥有的是一个包含 300 多列和 10000 行的文件(包含 300 个不同信号的强度信息)和另一个具有 1 列和 10000 行的数据(其中包含与 300 个信号的强度级别对应的波长测量值)。我想根据波长数据绘制所有 300 列强度数据,

我检查了这个 Plotting multiple spectra with different colors in a hyperSpec object

但这并没有太大帮助,我尝试模拟一个可用于解释的数据

Its <- matrix(rexp(200, rate=0.1),nrow=10000,ncol=300)
Wls <- 1:10000

我试着先把它们放在一起

df <- cbind(Wls,Its) 

然后我根据之前的评论将它融化以便使用ggplot,

library(reshape2)
library(ggplot2)
melted data <- melt(df,id.vars = 'V1')
ggplot(melted) + 
  aes(x=df, y=value, group=variable, color=variable) + 
  geom_line()

真的有绘制光谱的好方法吗?我真的很感谢任何帮助

【问题讨论】:

  • 您能否进一步说明这两个数据集实际上应该包含的内容。
  • 300 行的情节似乎不是很有用。
  • @B.Shankar 我无法在上面发布照片,但我尝试在此处显示链接。nature.com/srep/2015/150130/srep08050/fig_tab/srep08050_F5.html
  • @Roland 我的声誉很低,但如果你用谷歌搜索光谱图,你会看到,它显示了波长的变化,所以对我来说它非常有用
  • 我想知道的是您的数据集存储测量值的物理量。例如,列(或者可能是行)是否存储强度频率波长的测量值......之间的确切关系是什么?你的两个数据集...

标签: r graphics


【解决方案1】:

这是一种可能的解决方案。 我在这里发布了一个较小的示例,但您只需稍作修改即可使其适用于您的数据集。

library(reshape2)
library(ggplot2)

# Generate artificial data
Its <- matrix(sapply(1:30, function(N) {
    100 * dcauchy(x = c(scale(1:1000, scale = 1000)), 
                  location = dnorm(rnorm(1))/2, 
                  scale = 0.4+0.5*(N-1)/29, 
                  log = F)
  }), ncol = 30) # Intensities data-set
Wls <- 100:1100  # Wavelengths data-set

# Combine the relevant data and process it for plotting; replace "Wls", "Its" with your data-sets.
Full.Set <- data.frame(cbind(Wls, Its))
colnames(Full.Set) <- c("Wavelength", paste0("Sig.", 1:30)) # change 30 to the number of columns 
                                                            # in your intensity data-set.
Melted.Set <- melt(Full.Set, id.vars = "Wavelength")

# Plot 
ggplot(Melted.Set, 
       aes(x = Wavelength, y = value, color = variable)) + 
  geom_line()

我得到了这样的图表:

值得一提的一点是,在单个图中绘制 300 个不同的信号可能会使图变得过于复杂而无法发挥高实用性。

【讨论】:

  • 如果我们在可见光谱范围内,我会将颜色更改为 RGB values of visible spectrum 这应该更容易理解频率依赖性。我认为曲线的附加透明度也是有益的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 2022-10-20
  • 2022-01-20
  • 2018-06-27
  • 2019-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多