Plotting Only One Point in 3D Matplotlib

matplotlib

Solution

I think your code is completely correct. The point IS at its position namely (1,1,1). You can drag the plot to see the point from another angle and you'll find that the point is at a correct position.

Trust yourself! By replacing the z-coordinate of point to maybe 10.0, you'll find that your code is correct.

Problem

I'm trying to plot the solution of a linear system with 3 planes, the solution is the point (1,1,1) I've plotted the point with point command but I suspect the point is not in the right place: ``` ax.plot([1.], [1.], [1.], markerfacecolor='k', markeredgecolor='k', marker='o', markersize=5, alpha=0.6) ``` Thanks Ok, the code is: ``` #/usr/bin/env python3 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from sympy.solvers import * from sympy import * from matplotlib import rcParams # Activating LateX rcParams['text.latex.unicode'] = True rcParams['text.usetex'] = True rcParams['text.latex.preamble'] = '\\usepackage{amsthm}', '\\usepackage{amsmath}', '\\usepackage{amssymb}', '\\usepackage{amsfonts}', '\\usepackage[T1]{fontenc}', '\\usepackage[utf8]{inputenc}' # Declaring the three planes as functions f1 = lambda x, y: x + y -1 f2 = lambda x, y: 1 - x + y f3 = lambda x, y: 1 + x - y # Declaring symbolic variables x = Symbol('x') y = Symbol('y') z = Symbol('z') # Solving the linear system fun1 = x+y-z-1 fun2 = x-y+z-1 fun3 = -x+y+z-1 solucion = solve([fun1, fun2, fun3], [x, y, z]) # Printing the solution pprint(('Solución Del Sistema es: {}').format(solucion)) # Stablishing our ranges for our variables x1 = y1 = np.arange(-5, 5, 0.25) ceros = np.zeros(len(x1)) # Stablishing our meshgrid x, y = np.meshgrid(x1, y1) # Our 3D Canvas Figure Plot fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # Plotting the 3 planes ax.plot_surface(x, y, f1(x, y), rstride=1, cstride=1, linewidth=0, antialiased=True, color='blue') ax.plot_surface(x, y, f2(x, y), rstride=1, cstride=1, linewidth=0, antialiased=True, color='red') ax.plot_surface(x, y, f3(x, y), rstride=1, cstride=1, linewidth=0, antialiased=True, color='green') ax.plot([1.], [1.], [1.], markerfacecolor='k', markeredgecolor='k', marker='o', markersize=5, alpha=0.6) # Putting the limits in the axes ax.set_xlim(-10, 10) ax.set_ylim(-10, 10) ax.set_zlim(-10, 10) # Writing the axis labels ax.set_xlabel('x', color='blue') ax.set_ylabel('y', color='blue') ax.set_zlabel('z', color='blue') # Writing The Title of The Plot ax.set_title(r'$Graphical\; Resolution\; Linear\; System\; 3 \times 3$', fontsize=18) # Stablishing the plots of our legend labels blue_proxy = plt.Rectangle((0, 0), 1, 1, fc='b') red_proxy = plt.Rectangle((0, 0), 1, 1, fc='r') green_proxy = plt.Rectangle((0, 0), 1, 1, fc='g') black_proxy = plt.Line2D([0], [0], linestyle="none", marker='o', alpha=0.6, markersize=10, markerfacecolor='black') # Drawing Our Legend ax.legend([blue_proxy,red_proxy, green_proxy, black_proxy], [r'$x+y-z=1$',r'$x-y+z=1$', r'$-x+y+z=1$', r'$Sol.\; (1,1,1)$'], numpoints=1, loc='upper left') plt.show() ``` An image: The z-coordinate of the point (1,1,1) is not at the height 1, it is below 0. So, the point is not drawn in the correct place.

Original source

Related problems