Skip to content

Instantly share code, notes, and snippets.

@franktoffel
Last active December 20, 2019 07:21
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save franktoffel/aea4329b760eb3e72f4d to your computer and use it in GitHub Desktop.
Save franktoffel/aea4329b760eb3e72f4d to your computer and use it in GitHub Desktop.
Draw a minimalist Christmas tree with Python and their awesome libraries
# coding: utf-8
"""
Draw a minimalist Christmas tree with Python and their awesome libraries.
Code inspired by a StackEchange post and the Christmas spirit.
http://codegolf.stackexchange.com/questions/15860/make-a-scalable-christmas-tree/16358#16358
Author: Franz Navarro - CAChemE.org
License: MIT
Dependencies: Python, NumPy, matplotlib
"""
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
# Calculate spiral coordinates for the Xmas tree
theta = np.linspace(-8 * np.pi, 8 * np.pi, 200)
z = np.linspace(-3, 0, 200)
r = 5
x = r * np.sin(theta)*z
y = r * np.cos(theta)*z
# Use matplotib and its OOP interface to draw it
fig = plt.figure() # Create figure
ax = fig.gca(projection='3d') # It's a 3D Xmas tree!
ax.view_init(15, 0) # Set a nice view angle
ax._axis3don = False # Hide the 3d axes
# Plot the Xmas tree as a line
ax.plot(x, y, z,
c='green', linewidth=2.5)
# Every Xmas tree needs a star
ax.scatter(0, 0, 0.2,
c='red', s=250, marker='*')
# Type here your best whishes
ax.set_title(u"¡Feliz Navidad!")
plt.show()
@franktoffel
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment