import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
from matplotlib.patches import Circle, PathPatch
import mpl_toolkits.mplot3d.art3d as art3d
%matplotlib inline
import matplotlib as mpl
import sys
label_size = 18
mpl.rcParams['xtick.labelsize'] = label_size
mpl.rcParams['ytick.labelsize'] = label_size
from matplotlib import rc
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
## for Palatino and other serif fonts use:
#rc('font',**{'family':'serif','serif':['Palatino']})
rc('text', usetex=True)
x = np.linspace(-1, 1, 100)
z = np.linspace(-2, 2, 100)
X, Z = np.meshgrid(x, z)
Y = np.sqrt(1 - X**2)
fig = plt.figure(figsize=(4,5))
ax = Axes3D(fig)
# Draw parameters
rstride = 2
cstride = 2
### Cilindro
ax.plot_surface(X, Y, Z, alpha=0.5, cmap = "gnuplot", rstride=rstride, cstride=cstride)
ax.plot_surface(X, -Y, Z, alpha=0.5, cmap = "gnuplot", rstride=rstride, cstride=cstride)
# Tapa superior e inferior
up = Circle((0, 0), 1, alpha = .5, fc = "y")
ax.add_patch(up)
art3d.pathpatch_2d_to_3d(up, z=2.1)
#inferior
down = Circle((0, 0), 1, alpha = .5, fc = "orange")
ax.add_patch(down)
art3d.pathpatch_2d_to_3d(down, z=-2.1)
#Estilo
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
ax.set_xticks([-1,1])
ax.set_yticks([-1,1])
ax.set_zticks([-2,2])
ax.set_facecolor("white")
ax.xaxis.pane.fill = False
ax.yaxis.pane.fill = False
ax.zaxis.pane.fill = False
ax.axis("on")
plt.savefig('cilindro' + '.png', format='png', dpi= 150, bbox_inches='tight');
print(f"Python version: {sys.version}")
print(" ")
print("numpy == ", np.__version__)
print("matplotlib == ", mpl.__version__)
Python version: 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 12:04:33) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] numpy == 1.14.0 matplotlib == 2.1.2