Wie definieren die Achsen des 3D-Voxel-Plots im Beispiel?

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
TaigoVan
User
Beiträge: 9
Registriert: Samstag 10. Juli 2021, 15:15

Hallo zusammen,

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.

Bild

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()
Ich bedanke mich im Voraus und freue mich auf die Antworten.

Van
Antworten