Ich möchte das folgende Beispiel verwenden, um ein 3D-Voxeldiagramm zu erstellen:
https://matplotlib.org/stable/gallery/ ... numpy-logo
Ich würde gerne wissen, wie ich die Parameter ändern kann, um die Achsen neu zu definieren? Die Achsen des durch den Code im Beispiel erzeugten Graph stellen die Anzahl der entsprechenden Elemente dar. Ich möchte es aber als Länge umschreiben, also z.B. die Elementen in x-, und y-Richtung sind gleichmäßig in [1000, 1500] verteilt, und in z-Richtung [200, 1400]. Die Sache der Skalierung muss natürlich auch berücksichtigt werden.
Ich werde den Code auch hierher kopieren:
Code: Alles auswählen
import matplotlib.pyplot as plt
import numpy as np
def explode(data):
size = np.array(data.shape)*2
data_e = np.zeros(size - 1, dtype=data.dtype)
data_e[::2, ::2, ::2] = data
return data_e
# build up the numpy logo
n_voxels = np.zeros((4, 3, 4), dtype=bool)
n_voxels[0, 0, :] = True
n_voxels[-1, 0, :] = True
n_voxels[1, 0, 2] = True
n_voxels[2, 0, 1] = True
facecolors = np.where(n_voxels, '#FFD65DC0', '#7A88CCC0')
edgecolors = np.where(n_voxels, '#BFAB6E', '#7D84A6')
filled = np.ones(n_voxels.shape)
# upscale the above voxel image, leaving gaps
filled_2 = explode(filled)
fcolors_2 = explode(facecolors)
ecolors_2 = explode(edgecolors)
# Shrink the gaps
x, y, z = np.indices(np.array(filled_2.shape) + 1).astype(float) // 2
x[0::2, :, :] += 0.05
y[:, 0::2, :] += 0.05
z[:, :, 0::2] += 0.05
x[1::2, :, :] += 0.95
y[:, 1::2, :] += 0.95
z[:, :, 1::2] += 0.95
ax = plt.figure().add_subplot(projection='3d')
ax.voxels(x, y, z, filled_2, facecolors=fcolors_2, edgecolors=ecolors_2)
plt.show()
Van