Skip to main content

Data Visualization with Python

Scatter plots with Matplotlib 

I'm in the middle of taking a 6 week Data Visualization course at Code Academy so I guess you might call this a midterm project. In this jupyter notebook project, we have use real world space data (celestial star location ) for the Orion constellation and output a 3D scatter plot. This was fun but because it is an intro course, the project didn't even get to labeling the actual star which I thought was bunk. 

At the end of the project, they offer you a link to some star data and challenge you to plot some local stars. So I decided to publish my results that I will end up turning in for the extra credit portion of the project. (code below)

I picked a few stars, starting with some familiar ones, like Sirius, and started plotting it out. It took a while to get the labels on correctly, for some reason, I thought it was going to be easy but it definitely took some searching as the 3D portion of it made finding the examples far more challenging than the standard 2D graphs.  The output was cool.


However, the coolest thing about a 3D chart is being able to to turn and view it from any angle. I created an animation after another hour or so which was excellent. The final part and by far the most difficult was exporting the animation as a gif/video. That part I did outside of code and just used some other software. The matplotlib needs some help with that since it requires a third party software such as ImageMagik or FFMPEG. 





 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation

# star data from http://www.stellar-database.com using Celestial (X,Y,Z) coordinates
new_star_legend = ['Procyon', 'Sirius', '61 Cygni','Alpha/Proxima Centari', 'Wolf 359']
a = [ -4.769, -1.612, 6.489, -1.643 ,  -0.0566 ]
b = [10.31, 8.078, -6.109, -1.374,  -5.920]
c = [1.039, -2.474, 7.152, -3.838, 0.486]

# create the figure and subplot axes
fig = plt.figure()
ax = fig.add_subplot(1,1,1,projection='3d')
ax.set_title('Celestial (X,Y,Z) coordinates in ly')

# scatter plot
ax.scatter(a, b, c, marker='*', linewidth=4)

# apply labels to each star
for zdir, x, y, z in zip(new_star_legend, a, b, c):
    ax.text(x, y, z, zdir)

# apply a simple rotation animation
for angle in range(0, 360):
    ax.view_init(30, angle)
    plt.draw()
    plt.pause(.001)

# the show method is not needed in this instance
# plt.show()

eddyizm
site: https://eddyizm.com
twitter: http://twitter.com/eddyizm
github: https://github.com/eddyizm

Comments

Popular posts from this blog

Sending SMS via code (.Net, c#)

Stream Our Mistakes EP 001 --- In this episode, we will work on sending SMS messages via code using twilio. The example said it could be done in 30 seconds but it took us closer to an hour. Browse the code, fork the repo to get ready for our next steps. https://github.com/mmdempsey/SMS-Automation Subscribe to the podcast on itunes , google play ,   stitcher | eddyizm site: http://eddyizm.com twitter: http://twitter.com/eddyizm github: https://github.com/eddyizm matt site: http://octon.io/ github: https://github.com/mmdempsey --- **Tool of the week:** https://technet.microsoft.com/en-us/sysinternals/zoomit.aspx --- **youtube live broadcast:** https://youtube.com/user/eddyizm/live Subscribe to our channel and follow my twitter feed to be notified of our next live broadcast and feel free to leave us comments and suggestions on what you want to see. ---

004 - HTML Scraping with Beautiful Soup

Stream Our Mistakes EP 004 In this episode, Matt walks us through html/web scraping using the popular python library, Beautiful Soup. Here's the code snippet from the session and links: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 # Created for Stream Our Mistakes # https://streamourmistakes.blogspot.com/ # Reference: # https://docs.python.org/3/library/urllib.request.html # https://www.crummy.com/software/BeautifulSoup/bs4/doc/ from bs4 import BeautifulSoup import urllib.request ''' # local html to play with from documentation Uncomment to enable html_doc = """ <html><head><title>The Dormouse's story</title></head> <body> <p class="title"><b>The Dormouse's story</b></p> <p class="story">Once upon a time there were three little sister