R代码是否可用于创建银河系或宇宙的3D图?在过去的六个月里我搜索了几次而没有找到任何一次。
这篇新闻文章包含一些非常漂亮的3D图,看起来它们可能是用R创建的:
可以在上面的链接中查看短视频,但我没有看到R代码的链接。该视频由里昂大学和夏威夷大学的人员创建。以下是与同一项目相关的较长视频的链接:
http://irfu.cea.fr/cosmography
我只是觉得从R中的3D绘图中探索空间会很好,但我找不到任何相关的代码。
对象的位置可能在Redshift目录中找到,也许可以下载,但我不知道如果我尝试创建自己的3D地图,是否需要以各种方式调整这些位置数据。如果我尝试创建自己的地图,这是一个可能的数据来源:
https://www.cfa.harvard.edu/~dfabricant/huchra/zcat/
我已经阅读了一些内容,要求提供相关的包裹并不适合发布。对不起,如果这篇文章不合适。
答案 0 :(得分:2)
问题不是建模而是数据。这是一个可用的数据库。 http://www.stellar-database.com/isdb.mdb - 但可能你需要专心挖掘你想要的东西。
这是一个简单的SQL查询来提取一些星数据:
SELECT Positions.OwnerID, Positions.RA_hr, Positions.RA_min, Positions.RA_sec, Positions.Dec_deg, Positions.Dec_arcmin, Positions.Dec_arcsec, Positions.Distance, Spectra.SpectralClass, Spectra.LuminosityClass, qryProps.Name
FROM (Positions LEFT JOIN Spectra ON Positions.OwnerID = Spectra.OwnerID) LEFT JOIN qryProps ON Positions.OwnerID = qryProps.OwnerID
WHERE (((Positions.Distance)>=0));
然后将其保存为csv并导入:
stars<-read.csv("qNamedStars.txt",header=T)
head(stars)
编写一个函数将coords转换为X,Y,Z
celCoords<-function(Rh,Rm,Rs,Da,Dm,Ds,Distance){
R.angle<-((Rh/24)+(Rm/(24*60))+(Rm/(24*60*60)))*2*pi
D.angle<-(Da/90)+(Dm/(90*60))+(Ds/(90*60*60))*0.5*pi
Z<-cos(D.angle)*Distance
hyp.XY<-sin(D.angle)*Distance
X<-sin(R.angle)*hyp.XY
Y<-cos(R.angle)*hyp.XY
return(c(X,Y,Z))
}
starcoords<-cbind(stars,
matrix(celCoords(stars$RA_hr,
stars$RA_min,
stars$RA_sec,
stars$Dec_deg,
stars$Dec_arcmin,
stars$Dec_arcsec,
stars$Distance
),,ncol=3,byrow=T)
)
colnames(starcoords)<-c(colnames(stars),"X","Y","Z")
过滤data.frame
sf<-starcoords[abs(starcoords$Z)<2000 & abs(starcoords$X)<1000,] # apply a filter
然后使用rgl
require(rgl)
plot3d(sf$X,sf$Y,sf$Z,col=rainbow(nrow(sf)),size=10)
如果可用,您可以显然添加更多数据,包括亮度,大小,类型等,然后使用这些参数来设置大小,颜色等。