Basically I have this code:
import matplotlib.pyplot as plt
import numpy as np
from itertools import product, combinations
fig = plt.figure()
ax = fig.add_subplot(1,1,1,projection='3d')
but that gets me this result:
whereas I want something like this (without the 3d cube):
In my picture you can see the grid plane lines are too close to each other at the plane intersections. I want them to positioned uniformly starting at the 3d grid origin.
When using these graphics, you can manually zoom by dragging the mouse and holding right click. This, in return, will move the grid lines. This means that “setting” a predetermined “zoom level” is the real problem. Here is a quick example I did. You can adjust it to how you need it.
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Define the range of the data
x_range = (0, 1)
y_range = (0, 1)
z_range = (0, 1)
# Set zoom percentage (e.g., zoom to 50% of the data range)
zoom_percentage = 0.5
# Calculate new limits based on zoom percentage
def calculate_zoom_limits(data_range, percentage):
center = (data_range[0] + data_range[1]) / 2
half_span = (data_range[1] - data_range[0]) * percentage / 2
return (center - half_span, center + half_span)
x_limits = calculate_zoom_limits(x_range, zoom_percentage)
y_limits = calculate_zoom_limits(y_range, zoom_percentage)
z_limits = calculate_zoom_limits(z_range, zoom_percentage)
# Set the limits based on zoom percentage
ax.set_xlim(x_limits)
ax.set_ylim(y_limits)
ax.set_zlim(z_limits)
# Enable grid
ax.grid(True)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
# Show the plot
plt.show()
I hope this helped.
3