首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用scatterplot3d绘制球体

使用scatterplot3d绘制球体
EN

Stack Overflow用户
提问于 2013-04-16 08:02:31
回答 1查看 2K关注 0票数 1

我有一个矩阵,所有氨基酸的x,y,z坐标。我使用以下函数在3D空间中绘制蛋白质图:

代码语言:javascript
复制
make.Plot <- function(position.matrix, center, radius){
  scatterplot3d(x = position.matrix[,4], y = position.matrix[,5], z = position.matrix[,6], type = 'o', color = 'blue')
}

position.matrix中的每一行代表一种不同的氨基酸。我想做的是修改函数,这样如果我传递给它一个" center“,它将对应于位置矩阵(列出氨基酸编号)列2中的一个数字,以及一个半径,我想要一个以该氨基酸为中心的球体。

例如,如果我传递它(position.matrix,9,3),我希望它围绕氨基酸9绘制一个半径为3的球体。我已经在这里上传了位置数据的副本:http://temp-share.com/show/YgFHv2J7y

请注意,行计数并不总是规范计数,因为一些残差被跳过了。我会一直传给它“规范”的计数。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-16 08:50:18

以下是您的代码的经过测试的修改。它为cex.symbols添加了一个长度为2的大小向量,该向量是通过向逻辑向量加1来选择的:

代码语言:javascript
复制
make.Plot <- function(position.matrix, center, radius){
    scatterplot3d(x = position.matrix[,4], y = position.matrix[,5], 
                  z = position.matrix[,6], type = 'o', 
          cex.symbols=c(1,radius)[1+(position.matrix[,2]==center)],  color = 'blue')
          }

我想知道您真正想要的是不是rgl包。它具有形状和交互式打印环境。使用scatterplot3d,您可以使用以下代码将选定的点设置为红色:

代码语言:javascript
复制
myplot <- make.Plot(position.matrix, 3, 9)
myplot$points3d(position.matrix[3 , 4:6],  col="red", cex=10)

我还找到了一些代码来绘制一个“参数球体”,它可以用来创建一个突出显示的指示器:

代码语言:javascript
复制
myplot <- make.Plot(position.matrix, 3, 9)
a=seq(-pi,pi, length=10);
myplot$points3d(x=2*c(rep(1, 10) %*% t(cos(a)))+position.matrix[3 , 4] , 
 y=2*c(cos(a) %*% t(sin(a)))+position.matrix[3 , 5],
 z=2*c(sin(a) %*% t(sin(a)))+position.matrix[3 , 6],
 col="red", cex=.2)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16026610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档