[英]Using scatterplot3d to plot a sphere
我有所有氨基酸的x,y,z坐标矩阵。 我使用以下函数在3D空间中绘制蛋白质:
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中的每一行都对应一个不同的氨基酸。 我想做的就是修改函数,所以如果我给它传递一个“中心”,它对应于位置矩阵第2列中的一个数字(列出了氨基酸编号)以及半径,我想要一个球体中心在那个氨基酸上。
例如,如果我通过它(position.matrix,9、3),我希望它在9号氨基酸周围绘制半径为3的球体。我在此处上传了位置数据的副本: http:// temp-share .com / show / YgFHv2J7y
请注意,由于跳过了一些残差,因此行计数并不总是规范计数。 我将始终通过“规范”计数...
谢谢你的帮助!
这是您代码的经过测试的修改。 它为cex.symbols添加了一个长度为2的大小矢量,该矢量是通过将逻辑矢量加1来选择的:
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,您可以使用以下代码将选择的点设为红色:
myplot <- make.Plot(position.matrix, 3, 9)
myplot$points3d(position.matrix[3 , 4:6], col="red", cex=10)
我还找到了一些代码来绘制“参数范围”,可以对其进行修改以创建突出显示的指示器:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.