Matplotlib Exercise 2

Imports


In [2]:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

Exoplanet properties

Over the past few decades, astronomers have discovered thousands of extrasolar planets. The following paper describes the properties of some of these planets.

http://iopscience.iop.org/1402-4896/2008/T130/014001

Your job is to reproduce Figures 2 and 4 from this paper using an up-to-date dataset of extrasolar planets found on this GitHub repo:

https://github.com/OpenExoplanetCatalogue/open_exoplanet_catalogue

A text version of the dataset has already been put into this directory. The top of the file has documentation about each column of data:


In [3]:
!head -n 30 open_exoplanet_catalogue.txt































Use np.genfromtxt with a delimiter of ',' to read the data into a NumPy array called data:


In [4]:
data = np.genfromtxt('open_exoplanet_catalogue.txt', delimiter = ',')

In [5]:
assert data.shape==(1993,24)

Make a histogram of the distribution of planetary masses. This will reproduce Figure 2 in the original paper.

  • Customize your plot to follow Tufte's principles of visualizations.
  • Customize the box, grid, spines and ticks to match the requirements of this data.
  • Pick the number of bins for the histogram appropriately.

In [22]:
masses = data[:,2][np.logical_not(np.isnan(data[:,2]))]

In [23]:
masses.max() #does not equal ~ 15...


Out[23]:
263.0

In [24]:
plt.hist(masses,bins = 60)
plt.show()



In [25]:
import pandas as pd
pd.DataFrame(data)


Out[25]:
0 1 2 3 4 5 6 7 8 9 ... 14 15 16 17 18 19 20 21 22 23
0 NaN 0 0.001400 0.054000 0.176891 0.00480 NaN NaN NaN NaN ... 2012 NaN NaN NaN NaN 0.460 0.4500 0.000 3584 NaN
1 NaN 0 NaN 0.114000 4.194525 0.03900 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 0.460 0.4500 0.000 3584 NaN
2 NaN 0 NaN 0.071000 6.356006 0.05200 NaN NaN NaN NaN ... NaN NaN NaN NaN NaN 0.460 0.4500 0.000 3584 NaN
3 NaN 0 0.141901 1.011545 19.224180 0.14300 0.0626 NaN NaN NaN ... 2010 NaN NaN NaN 650.00 1.050 1.2300 0.170 5722 NaN
4 NaN 0 0.097537 0.975093 39.031060 0.22900 0.0684 NaN NaN NaN ... 2010 NaN NaN NaN 650.00 1.050 1.2300 0.170 5722 NaN
5 NaN 0 0.022000 0.147000 1.592851 0.02710 NaN NaN NaN NaN ... 2010 NaN NaN NaN 650.00 1.050 1.2300 0.170 5722 NaN
6 NaN 0 6.900000 NaN 501.750000 1.33000 0.1500 NaN NaN NaN ... 2009 NaN NaN NaN 143.00 1.250 NaN -0.180 4290 NaN
7 NaN 0 0.017000 NaN 3500.000000 2.10000 NaN NaN NaN NaN ... 2005 NaN NaN NaN 6500.00 0.220 NaN NaN 3840 NaN
8 NaN 0 1.240000 1.670000 2.705782 0.04470 NaN NaN NaN NaN ... 2013 NaN NaN NaN 200.00 1.630 2.1800 0.120 6490 NaN
9 NaN 0 0.019500 0.252500 1.580404 0.01488 0.0000 NaN NaN NaN ... 2009 NaN NaN NaN 14.55 0.176 0.2213 0.100 3250 NaN
10 NaN 0 NaN 0.266100 18.870227 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 626.10 0.820 0.8920 NaN 5404 NaN
11 NaN 0 NaN 0.230560 46.902320 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 626.10 0.820 0.8920 NaN 5404 NaN
12 NaN 0 1.820000 NaN 437.050000 1.17350 0.5200 NaN NaN NaN ... 2001 NaN NaN NaN 77.82 1.130 1.3300 0.453 5702 NaN
13 NaN 0 2.170000 NaN 6700.000000 6.95000 0.2400 NaN NaN NaN ... 2014 NaN NaN NaN 77.82 1.130 1.3300 0.453 5702 NaN
14 NaN 0 0.080000 NaN 14.476000 0.11000 0.1150 NaN NaN NaN ... 2009 NaN NaN NaN 63.69 1.087 1.4800 0.290 5724 NaN
15 NaN 0 0.520000 NaN 3.096583 0.04260 0.0100 NaN NaN NaN ... 1998 NaN NaN NaN 50.00 1.060 1.1700 0.160 5714 NaN
16 NaN 0 1.990000 NaN 3810.000000 4.89000 0.2520 NaN NaN NaN ... 1998 NaN NaN NaN 50.00 1.060 1.1700 0.160 5714 NaN
17 NaN 0 NaN 0.068200 6.803000 0.07190 NaN NaN NaN NaN ... 2015 NaN NaN NaN NaN 1.071 1.0920 NaN 6004 NaN
18 NaN 0 NaN 0.059600 8.703000 0.08470 NaN NaN NaN NaN ... 2015 NaN NaN NaN NaN 1.071 1.0920 NaN 6004 NaN
19 NaN 0 NaN 0.099000 11.922000 0.10450 NaN NaN NaN NaN ... 2015 NaN NaN NaN NaN 1.071 1.0920 NaN 6004 NaN
20 NaN 0 0.050740 0.219624 16.092000 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 226.30 1.020 1.0300 0.120 5685 3.66
21 NaN 0 0.025952 0.076549 25.516900 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 226.30 1.020 1.0300 0.120 5685 3.66
22 NaN 2 0.840000 NaN 1135.000000 2.08000 0.3200 NaN NaN NaN ... 2002 NaN NaN NaN 35.00 0.930 1.4600 -0.220 NaN 6.00
23 NaN 0 NaN 0.330000 5.113400 0.05600 0.0000 NaN NaN NaN ... 2014 NaN NaN NaN 600.00 0.910 0.8600 0.300 4950 11.00
24 NaN 0 0.088000 0.440000 11.759000 0.09800 0.0000 NaN NaN NaN ... 2014 NaN NaN NaN 600.00 0.910 0.8600 0.300 4950 11.00
25 NaN 0 NaN 0.117560 6.040450 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 327.93 0.914 0.8160 NaN 5123 NaN
26 NaN 0 NaN 0.114820 4.138575 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 327.93 0.914 0.8160 NaN 5123 NaN
27 NaN 0 NaN 0.246960 6.626400 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 1698.68 0.994 0.9760 NaN 5913 NaN
28 NaN 0 NaN 0.161300 3.701212 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 1698.68 0.994 0.9760 NaN 5913 NaN
29 NaN 0 NaN 0.493010 6.581484 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 1167.03 0.740 1.0370 NaN 5180 NaN
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1963 NaN 0 0.800000 1.685000 2.694040 0.04260 0.0000 NaN NaN NaN ... 2012 NaN NaN NaN 344.00 1.418 1.6830 0.210 6390 NaN
1964 NaN 0 0.413000 NaN 129.800000 0.51000 0.2100 NaN NaN NaN ... 2004 NaN NaN NaN 45.00 1.300 1.1500 -0.060 5929 NaN
1965 NaN 0 1.700000 NaN 387.100000 1.24000 0.1680 NaN NaN NaN ... 2011 NaN NaN NaN 227.00 1.740 6.2000 -0.110 5076 NaN
1966 NaN 0 0.960000 NaN 331.500000 0.93000 0.1600 NaN NaN NaN ... 2009 NaN NaN NaN 59.30 1.450 3.2200 0.154 5052 NaN
1967 NaN 0 0.011000 NaN 58.430000 0.26000 0.1100 NaN NaN NaN ... 2011 NaN NaN NaN 11.15 0.690 NaN -0.330 4715 NaN
1968 NaN 1 2.800000 NaN 1276.000000 1.90000 0.0000 NaN NaN NaN ... 2012 NaN NaN NaN 570.00 NaN NaN NaN NaN NaN
1969 NaN 1 8.000000 NaN 2506.000000 2.90000 0.5200 NaN NaN NaN ... 2012 NaN NaN NaN 570.00 NaN NaN NaN NaN NaN
1970 NaN 0 0.980000 1.670000 2.143634 0.03444 0.0000 NaN NaN NaN ... 2011 NaN NaN NaN NaN 1.190 1.7500 -0.120 5920 NaN
1971 NaN 0 0.053160 NaN 74.720000 0.32000 0.1300 NaN NaN NaN ... 2010 NaN NaN NaN 8.82 0.800 NaN -0.040 5166 NaN
1972 NaN 0 0.075400 NaN 525.800000 1.18000 0.3200 NaN NaN NaN ... 2011 NaN NaN NaN 8.82 0.800 NaN -0.040 5166 NaN
1973 NaN 0 1.000000 NaN 2093.300000 3.20000 0.4000 NaN NaN NaN ... 2012 NaN NaN NaN NaN 1.000 2.9000 -0.460 4820 NaN
1974 NaN 0 1.637000 1.171000 1.628425 0.02729 0.0000 NaN NaN NaN ... 2007 NaN NaN NaN 297.00 1.000 1.0840 0.090 5700 NaN
1975 NaN 0 4.600000 NaN NaN 1.70000 NaN NaN NaN NaN ... 2008 NaN NaN NaN 6800.00 0.370 NaN NaN NaN NaN
1976 NaN 0 5.000000 NaN NaN NaN NaN NaN NaN NaN ... 2004 NaN NaN NaN 59.00 0.025 NaN NaN 2550 NaN
1977 NaN 0 2.090000 1.368000 1.212884 0.02320 0.1060 NaN NaN NaN ... 2010 NaN NaN NaN 393.00 1.130 1.2030 0.150 5905 NaN
1978 NaN 0 NaN 0.203000 19.072460 0.12190 NaN NaN NaN NaN ... 2015 NaN NaN NaN 325.00 0.670 0.6400 -0.350 4717 NaN
1979 NaN 0 NaN 0.201000 7.620160 0.06610 NaN NaN NaN NaN ... 2015 NaN NaN NaN 325.00 0.670 0.6400 -0.350 4717 NaN
1980 NaN 0 0.939000 1.325000 1.720861 0.02959 0.0038 125.00 NaN NaN ... 2014 NaN NaN NaN 1056.00 1.167 1.2870 0.270 5750 5.10
1981 NaN 0 0.750000 1.260000 3.677240 0.05100 0.0000 NaN NaN NaN ... 2007 NaN NaN NaN NaN 1.330 1.6400 0.110 6325 NaN
1982 NaN 0 0.220000 0.570000 6.212290 0.06300 0.0000 NaN NaN NaN ... 2010 NaN NaN NaN 380.00 0.880 0.7700 0.300 5080 NaN
1983 NaN 0 NaN 0.287060 19.747412 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 720.22 NaN 1.4670 NaN 6115 NaN
1984 NaN 0 NaN 0.117560 1.772419 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 720.22 NaN 1.4670 NaN 6115 NaN
1985 NaN 0 NaN 0.186820 9.693201 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 674.39 1.021 1.7610 NaN 5684 NaN
1986 NaN 0 NaN 0.140340 3.292781 NaN NaN NaN NaN NaN ... 2014 NaN NaN NaN 674.39 1.021 1.7610 NaN 5684 NaN
1987 NaN 0 4.063000 1.024000 4.124461 0.04940 0.2280 NaN NaN NaN ... 2010 NaN NaN NaN 254.00 0.947 1.1050 0.010 5588 NaN
1988 NaN 0 3.328000 1.197000 5.452700 0.06770 0.4410 NaN NaN NaN ... 2012 NaN NaN NaN 257.00 1.392 1.5350 0.220 6442 NaN
1989 NaN 0 2.550000 NaN 403.500000 1.27000 0.1300 250.60 NaN NaN ... 2014 NaN NaN NaN 37.99 1.700 14.3000 0.120 4528 NaN
1990 NaN 0 3.320000 NaN 751.900000 1.93000 0.1000 67.54 NaN NaN ... 2014 NaN NaN NaN 37.99 1.700 14.3000 0.120 4528 NaN
1991 NaN 0 1.360000 NaN 395.400000 1.05100 0.0700 NaN NaN NaN ... 2003 NaN NaN NaN 68.50 1.000 1.2200 0.140 5407 NaN
1992 NaN 0 1.018000 NaN 1605.800000 2.68000 0.2500 NaN NaN NaN ... 2005 NaN NaN NaN 68.50 1.000 1.2200 0.140 5407 NaN

1993 rows × 24 columns


In [26]:
assert True # leave for grading

Make a scatter plot of the orbital eccentricity (y) versus the semimajor axis. This will reproduce Figure 4 of the original paper. Use a log scale on the x axis.

  • Customize your plot to follow Tufte's principles of visualizations.
  • Customize the box, grid, spines and ticks to match the requirements of this data.

In [46]:
y = data[:,6]
x = data[:,5]
x=np.log(x)

plt.scatter(x, y, label = 'Orbital Eccentricity vs. Semimajor Axis', c = u'k', marker = u'o')
plt.title('Orbital Eccentricity vs. Semimajor Axis')
plt.box(False)
plt.xlabel('Semimajor Axis')
plt.ylabel('Orbital Eccentricity (AU)')
plt.xlim(0, 1.5)
plt.ylim(0, 1.0)
plt.xticks([0.1,1.0,1.0])
plt.yticks([0.1,1.0,10])


#plt.legend()##I have no idea if you wanted a legend... but I tried to find the best place for it


Out[46]:
([<matplotlib.axis.XTick at 0x7fad5492bd30>,
  <matplotlib.axis.XTick at 0x7fad54551c50>,
  <matplotlib.axis.XTick at 0x7fad54218e48>],
 <a list of 3 Text xticklabel objects>)

In [28]:
assert True # leave for grading

In [ ]: