星系或宇宙的3D图

时间:2014-01-29 08:56:26

标签: r 3d plot

R代码是否可用于创建银河系或宇宙的3D图?在过去的六个月里我搜索了几次而没有找到任何一次。

这篇新闻文章包含一些非常漂亮的3D图,看起来它们可能是用R创建的:

http://www.dailymail.co.uk/sciencetech/article-2341750/The-beautiful-3D-map-space-plots-nearest-galaxies--reminds-tiny-Earth-is.html

可以在上面的链接中查看短视频,但我没有看到R代码的链接。该视频由里昂大学和夏威夷大学的人员创建。以下是与同一项目相关的较长视频的链接:

http://irfu.cea.fr/cosmography

我只是觉得从R中的3D绘图中探索空间会很好,但我找不到任何相关的代码。

对象的位置可能在Redshift目录中找到,也许可以下载,但我不知道如果我尝试创建自己的3D地图,是否需要以各种方式调整这些位置数据。如果我尝试创建自己的地图,这是一个可能的数据来源:

https://www.cfa.harvard.edu/~dfabricant/huchra/zcat/

我已经阅读了一些内容,要求提供相关的包裹并不适合发布。对不起,如果这篇文章不合适。

1 个答案:

答案 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)

enter image description here

如果可用,您可以显然添加更多数据,包括亮度,大小,类型等,然后使用这些参数来设置大小,颜色等。