Advertisement
Guest User

Untitled

a guest
Nov 13th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.61 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. """
  5.  
  6. # import packages
  7. import numpy as np
  8. import matplotlib.pyplot as plt
  9. import matplotlib.patheffects as PathEffects
  10. from matplotlib import rc
  11. rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
  12. ## for Palatino and other serif fonts use:
  13. #rc('font',**{'family':'serif','serif':['Palatino']})
  14. rc('text', usetex=True)
  15.  
  16. file = open("list-stars.txt")
  17. listoflines = file.readlines()
  18.  
  19. lines = []
  20. i = 1
  21.  
  22. for i in range(6,len(listoflines)):
  23.     line = listoflines[i]
  24.     lines.append(line)
  25.     i+=1
  26.  
  27. # define lists of attributes
  28.    
  29. names = []
  30. spectralclasses = []
  31. BVcolours = []
  32. UBcolours = []
  33. effTemps = []
  34. absolmags = []
  35. luminosities = []
  36.  
  37. i = 1
  38.  
  39. for i in range(len(lines)):
  40.     line = lines[i]
  41.     linesplit = line.split()
  42.  
  43.     name = linesplit[0]
  44.     names.append(name)
  45.    
  46.     spectralclass = linesplit[1]
  47.     spectralclasses.append(spectralclass)
  48.    
  49.     BVcolour = linesplit[2]
  50.     BVcolours.append(BVcolour)
  51.    
  52.     UBcolour = linesplit[3]
  53.     UBcolours.append(UBcolour)
  54.    
  55.     effTemp = linesplit[4]
  56.     effTemps.append(effTemp)
  57.    
  58.     absolmag = linesplit[5]
  59.     absolmags.append(absolmag)
  60.    
  61.    
  62.     luminosity = linesplit[6]
  63.     luminosities.append(luminosity)
  64.  
  65. # if you want to check, if all your lists are right, uncomment this passage
  66. '''
  67. print("names \n", names, "\n")
  68. print("spectralclasses \n", spectralclasses,"\n")
  69. print("BVcolours \n", BVcolours, "\n")
  70. print("UBcolours \n", UBcolours, "\n")
  71. print("effTemps \n", effTemps, "\n")
  72. print("absolmags \n", absolmags,"\n")
  73. print("luminosities \n", luminosities,"\n")
  74. '''
  75. X = []
  76. Y = []
  77. i = 0
  78.  
  79. for i in range(23):
  80.    
  81.     x = float(effTemps[i])
  82.     X.append(x)
  83.    
  84.     y = np.log10(float(luminosities[i]))
  85.     #y = float(luminosities[i])
  86.     Y.append(y)
  87.    
  88.     i+=1
  89.  
  90. print(X,"\n")
  91. print(Y)
  92.  
  93.  
  94. fig, ax = plt.subplots(figsize=(5,5), dpi = 300, facecolor = 'black')
  95.  
  96. plt.rc('text', usetex=True)
  97. plt.rc('font', family='serif')
  98.  
  99.  
  100. ax.spines['bottom'].set_color('white')
  101. ax.spines['left'].set_color('white')
  102.  
  103. ax.title.set_color('white')
  104. ax.yaxis.label.set_color('white')
  105. ax.xaxis.label.set_color('white')
  106. ax.tick_params(axis='x', colors='white')
  107. ax.tick_params(axis='y', colors='white')
  108.  
  109. # names of axes
  110. ax.set_title(r'Hertzsprung-Russel Diagramm')
  111. ax.set_xlabel(r'$ \displaystyle T_{eff} [\mathrm{K}]$', fontsize = 10)
  112. ax.set_ylabel(r'$ \displaystyle \log(L/L_{\odot}[\mathrm{mag}])$', fontsize = 10)
  113. ax.invert_xaxis()
  114.  
  115. # make some annotations
  116. i = 0
  117.  
  118. spectralcolor = []
  119.  
  120. for i in range(len(names)):
  121.    
  122.     if spectralclasses[i] == 'O':
  123.         c = 'darkblue'
  124.         spectralcolor.append(c)
  125.  
  126.     elif spectralclasses[i] == 'B':
  127.         c = 'cyan'
  128.         spectralcolor.append(c)
  129.    
  130.     elif spectralclasses[i] == 'A':
  131.         c = 'ivory'
  132.         spectralcolor.append(c)
  133.    
  134.     elif spectralclasses[i] == 'F':
  135.         c = 'beige'
  136.         spectralcolor.append(c)
  137.    
  138.     elif spectralclasses[i] == 'G':
  139.         c = 'wheat'
  140.         spectralcolor.append(c)
  141.    
  142.     elif spectralclasses[i] == 'K':
  143.         c = 'orange'
  144.         spectralcolor.append(c)
  145.    
  146.     elif spectralclasses[i] == 'M':
  147.         c = 'red'
  148.         spectralcolor.append(c)
  149.    
  150.     txt = ax.annotate( r'$ \displaystyle '+names[i]+'$', (X[i],Y[i]), color ='white', fontsize=7)
  151.     txt.set_path_effects([PathEffects.withStroke(linewidth=1, foreground='black')])
  152.     i+=1
  153.    
  154. ax.set_facecolor('black')
  155. ax.scatter(X,Y,color = spectralcolor)
  156.  
  157. # close and save file
  158. plt.savefig("HRD-plot.png", bbox_inches=0,  pad_inches = 0,  dpi = 300)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement