Ontwerp Matplotlib Visualisaties met Geavanceerde 3D-Plotten
description
Met deze prompt kun je geavanceerde 3D-visualisaties maken die meer inzicht geven in complexe datasets door gebruik van dimensionale diepte. Het lost beperkingen van 2D-plotten op en helpt je data op een intuïtieve manier te presenteren. De directe Python-code maakt implementatie snel en eenvoudig.
prompt
Help me een Matplotlib visualisatie te maken met geavanceerde 3D-plotten voor mijn dataset: <beschrijving van je dataset>. Ik wil gebruik maken van 3D grafiektypen zoals scatter, surface, of wireframe ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld Python-code om een geavanceerde 3D-visualisatie te maken met Matplotlib, inclusief scatter- en surface-plotten, met de door jou gevraagde aanpassingen:
```python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Voorbeeld dataset: vervang deze door je eigen data
np.random.seed(0)
num_points = 50
locaties = np.random.uniform(low=0, high=100, size=(num_points, 2))
temperatuur = np.random.uniform(low=15, high=30, size=num_points)
vochtigheid = np.random.uniform(low=30, high=90, size=num_points)
hoogte = np.random.uniform(low=0, high=200, size=num_points)
# Maak een grid voor surface plot (bijvoorbeeld op basis van locatie)
grid_x, grid_y = np.meshgrid(
np.linspace(locaties[:,0].min(), locaties[:,0].max(), 20),
np.linspace(locaties[:,1].min(), locaties[:,1].max(), 20)
)
# Interpoleer temperatuur en vochtigheid voor grid (optioneel, afhankelijk van data)
from scipy.interpolate import griddata
temp_grid = griddata(locaties, temperatuur, (grid_x, grid_y), method='cubic')
vocht_grid = griddata(locaties, vochtigheid, (grid_x, grid_y), method='cubic')
# Maak de plot
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')
# Scatter plot van meetpunten
ax.scatter(locaties[:,0], locaties[:,1], hoogte, c=temperatuur, cmap='Greens', s=50, label='Meetpunten')
# Voeg een colorbar toe voor temperatuur
cbar = plt.colorbar(plt.cm.ScalarMappable(cmap='Greens'), ax=ax, pad=0.1)
cbar.set_label('Temperatuur (°C)')
# Surface plot van temperatuur op grid
surf = ax.plot_surface(grid_x, grid_y, hoogte, facecolors=plt.cm.Greens(
(np.nan_to_num(temp_grid - np.nanmin(temp_grid)) / (np.nanmax(temp_grid) - np.nanmin(temp_grid))
)), alpha=0.6)
# Labels
ax.set_xlabel('X locatie')
ax.set_ylabel('Y locatie')
ax.set_zlabel('Hoogte (m)')
ax.set_title('3D Visualisatie van Meetgegevens')
# Rotatie van de x-as
ax.view_init(30, 45) # 30 graden elevatie, 45 graden azimut
# Toon de plot
plt.legend()
plt.show()
```
**Wat doet deze code?**
- Maakt een scatter plot van meetpunten met kleuren gebaseerd op temperatuur.
- Interpoleert temperatuur en vochtigheid over een grid voor een surface plot.
- Visualiseert de hoogte op de x-y locatie.
- Past kleuren, labels, en rotatie toe zoals gevraagd.
Je kunt de dataset aanpassen door je eigen meetwaarden in te voeren.
provider: deepseek
model: deepseek-chat
Hier is een complete Python code voor een geavanceerde 3D visualisatie met Matplotlib:
```python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Voorbeeld dataset (vervang met je eigen data)
# Temperatuur (°C), Vochtigheid (%), Hoogte (m)
np.random.seed(42)
n_points = 100
temperatuur = np.random.uniform(10, 30, n_points)
vochtigheid = np.random.uniform(40, 90, n_points)
hoogte = np.random.uniform(0, 1000, n_points)
# Creëer de figuur en 3D assen
fig = plt.figure(figsize=(12, 8))
ax = fig.add_subplot(111, projection='3d')
# 3D scatter plot met groene kleuren
scatter = ax.scatter(temperatuur, vochtigheid, hoogte,
c=hoogte, cmap='Greens',
s=50, alpha=0.8,
edgecolor='darkgreen')
# Surface plot voorbeeld (vereist grid data)
# Eerst creëren we een grid voor surface plot
X = np.linspace(min(temperatuur), max(temperatuur), 20)
Y = np.linspace(min(vochtigheid), max(vochtigheid), 20)
X, Y = np.meshgrid(X, Y)
Z = np.sin(X/5) * np.cos(Y/10) * 500 + 500 # Voorbeeld oppervlak
# Surface plot toevoegen
surface = ax.plot_surface(X, Y, Z,
alpha=0.3,
cmap='Greens',
edgecolor='darkgreen',
linewidth=0.5)
# Wireframe plot toevoegen
wireframe = ax.plot_wireframe(X, Y, Z,
color='darkgreen',
alpha=0.2,
linewidth=0.5)
# As labels en titel
ax.set_xlabel('Temperatuur (°C)', fontsize=12, fontweight='bold')
ax.set_ylabel('Vochtigheid (%)', fontsize=12, fontweight='bold')
ax.set_zlabel('Hoogte (m)', fontsize=12, fontweight='bold')
ax.set_title('3D Visualisatie: Temperatuur, Vochtigheid en Hoogte',
fontsize=14, fontweight='bold')
# Kleurenbalk toevoegen
cbar = fig.colorbar(scatter, ax=ax, shrink=0.5, aspect=20)
cbar.set_label('Hoogte (m)', fontsize=10)
# Rotatie instellen: 30 graden rond x-as
ax.view_init(elev=30, azim=0) # elev=30 graden voor x-as rotatie
# Grid en achtergrond
ax.grid(True, alpha=0.3)
ax.xaxis.pane.fill = False
ax.yaxis.pane.fill = False
ax.zaxis.pane.fill = False
# Beeldverhouding gelijk maken voor betere 3D weergave
ax.set_box_aspect([1,1,1])
plt.tight_layout()
plt.show()
```
**Aanpassingen die je kunt maken:**
1. **Eigen data laden**:
```python
# Vervang de voorbeelddata met je eigen dataset
# temperatuur = je_temperatuur_data
# vochtigheid = je_vochtigheid_data
# hoogte = je_hoogte_data
```
2. **Kleuren aanpassen**:
- Verander `cmap='Greens'` naar andere kleurenkaarten
- Gebruik `color='#00FF00'` voor specifieke hex kleuren
3. **Rotatie aanpassen**:
```python
# elev = hoogte (x-as rotatie), azim = azimuth (y-as rotatie)
ax.view_init(elev=45, azim=30) # Experimenteer met waarden
```
4. **Alleen scatter plot** (als surface niet nodig is):
```python
# Verwijder de plot_surface en plot_wireframe regels
```
De code bevat zowel scatter plots, surface plots als wireframe plots in groene tinten met duidelijke labels en de gevraagde 30 graden rotatie rond de x-as.