如何在R中使用SMILES或图像将分子结构添加到绘图中?

4
我希望在我的R绘图中添加4-氨基苯甲酸的分子结构。该绘图显示所述分子的红外光谱。是否可以使用SMILES代码添加,其为O=C(O)c1ccc(N)cc1,或者可以将其作为图片添加,可在此处找到(在底部进行了编辑)。我已编写以下脚本:
par(family="mono", font.axis=1)
data <- read.table("D13-4-aminobenzoic_acid.asc")
x <- data[,1]
y <- data[,2]
x1 <- x[rev(order(x))] # reverse order x

plot(x1,y, type="n", xlim=rev(range(x)),  
     axes=FALSE,
     xlab=expression(paste("Wavelength [", cm^-1,"]")),
     ylab="Transmittance [%]"
     )

lines(x1, y, col="firebrick")

axis(1, at=seq(500,4000,250))
axis(2, at=seq(40,100,10), xpd=T)

.asc文件可以在这里找到。 由于底部左侧空间最大,我希望分子能够被放置在那里。 图像缩小了85%:

enter image description here


1
尽管这是为地图设计的,但是它也适用于将图像添加到绘图中:http://stackoverflow.com/q/4523212/903061。我不会投票将其关闭为副本,因为可能有SMILES代码的解决方案。 - Gregor Thomas
很抱歉,我不知道如何在我的情况下使用image()命令。在我的研究中,我遇到了add.image()命令,它似乎类似于第一个提到的命令。然而,我以前从未在R中处理过图像,对此一无所知。 - user3182395
1
您可以使用Open Babel(http://openbabel.org/wiki/Main_Page)将SMILES转换为png格式,并将png文件添加到绘图中,如下面的答案所示。 - Marat Talipov
1个回答

1

您可以使用 pnggrid 包添加图像文件:

library(png)
library(grid)
img <- readPNG("img.png")
grid.raster(img, x=.15, y=.25, width=.3, hjust=0, vjust=0)

enter image description here

查看?grid.raster以获取函数的其他参数。注意,xy可能很难优化,并且请注意,widthheight是相对于原始大小的比例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接