Seite 1 von 1

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

Verfasst: Mittwoch 14. Juli 2021, 05:07
von TaigoVan
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