Jak mogę połączyć wykres 3D z wykresem powierzchni 3D, zachowując jednocześnie przezroczystość powierzchni, aby nadal widzieć wszystkie punkty?Łączenie wykresu punktowego z powierzchnią
Odpowiedz
Aby połączyć różne rodzaje działek w tym samym wykresie należy użyć funkcji
plt.hold (prawda).
Poniższy kod działki 3D wykres punktowy z 3D działki powierzchni:
from mpl_toolkits.mplot3d import *
import matplotlib.pyplot as plt
import numpy as np
from random import random, seed
from matplotlib import cm
fig = plt.figure()
ax = fig.gca(projection='3d') # to work in 3d
plt.hold(True)
x_surf=np.arange(0, 1, 0.01) # generate a mesh
y_surf=np.arange(0, 1, 0.01)
x_surf, y_surf = np.meshgrid(x_surf, y_surf)
z_surf = np.sqrt(x_surf+y_surf) # ex. function, which depends on x and y
ax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot); # plot a 3d surface plot
n = 100
seed(0) # seed let us to have a reproducible set of random numbers
x=[random() for i in range(n)] # generate n random points
y=[random() for i in range(n)]
z=[random() for i in range(n)]
ax.scatter(x, y, z); # plot a 3d scatter plot
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_zlabel('z label')
plt.show()
wynik:
http://s9.postimage.org/ge0wb8kof/3d_scatter_surface_plt.gif
można zobaczyć kilka innych przykładów z 3D działek tutaj:
http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html
Zmieniłem kolory powierzchni z powrotem m domyślne do colormap „na gorąco” w celu odróżnienia kolory dwóch działek - teraz, to widać, że powierzchnia działki zastępuje wykres punktowy, niezależnie od kolejności ...
EDIT: Aby rozwiązać ten problem, należy zastosować przezroczystość w mapie kolorów na powierzchni; dodanie kodu w: Transparent colormap i zmieniając linię:
ax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot); # plot a 3d surface plot
do
ax.plot_surface(x_surf, y_surf, z_surf, cmap=theCM);
otrzymujemy:
http://s16.postimage.org/5qiqn0p5h/3d_scatter_surface_plt_transparent.gif
Korzystanie przykład siluaty za; zamiast używać przezroczystości za pomocą polecenia cmap = theCM, możesz dostosować wartość alfa. To może Ci dać to, czego chcesz?
ax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot, alpha=0.2)
Chciałem wiedzieć, czy było coś takiego jak alfa, a twój komentarz uczynił to oczywistym! – user89
- 1. Używanie metody przejścia D3 z danymi dla wykresu punktowego
- 2. Przecięcie siatki z parametryczną powierzchnią
- 3. Dodaj płaszczyznę regresji do wykresu punktowego 3D w Plotly
- 4. Excel VBA: Dodawanie wykresu punktowego do arkusza roboczego jako przedmiot
- 5. ggplot2 Etykiety plotera punktowego
- 6. D3.js łączenie paska i wykresu liniowego
- 7. Projektowanie systemu punktowego na wiosnę
- 8. Jak poprawić rozmieszczenie etykiet dla wykresu punktowego matplotlib (kod, algorytm, wskazówki)?
- 9. Wektoryzacja Obliczanie iloczynu punktowego za pomocą SSE4
- 10. Łączenie wiosenne Łączenie
- 11. Łączenie UILongPressGestureRecognizer z UIPanGestureRecognizer
- 12. Łączenie Unity3d z Node.js
- 13. Łączenie kropek z DDD
- 14. Łączenie Raphaela z szynami
- 15. Łączenie Java z SQL?
- 16. Łączenie tabeli z listą
- 17. Łączenie sklepu z Ext.menu.Menu
- 18. Łączenie statyczne z libwinpthread
- 19. Łączenie z "git mergetool"
- 20. samodzielne łączenie z Pandami
- 21. Łączenie słownika z datowalnym
- 22. Łączenie C++ z Go
- 23. Łączenie z pragma z g ++
- 24. Łączenie z Kasandra z PHP
- 25. Usuń podpowiedź z wykresu kołowego Google Visualization (rdzeń wykresu)
- 26. Domyślna przezroczystość wykresu 3D z kontrolką wykresu ASP.NET?
- 27. Zmiana formantu narzędzi Highcharts z obiektu wykresu, po renderowaniu wykresu
- 28. Wyświetlanie wykresu sieciowego z etykietami
- 29. Rysowanie wykresu z ważonymi krawędziami
- 30. Jak wyodrębnić punkty z wykresu?
Do tego celu należy (ręcznie) podzielić dane na wykresie punktowym na pół (dane powyżej płaszczyzny i danych poniżej), a następnie narysować trzy rzeczy we właściwej kolejności. zobacz http://stackoverflow.com/questions/14824893/how-to-draw-diagrams-like-this/14825951#14825951 – tacaswell
Jeśli potrzebujesz "prawdziwego" renderingu 3D, popatrz na mayavi z entuzjazmu. http://code.enthought.com/projects/mayavi/ – tacaswell
@tcaswell Zauważyłem, że nawet zmieniając kolejność działek, powierzchnia pojawia się zawsze na wierzchu, i to jest dziwne ... (Zorder również nie działa) Dlatego zdecydowałem się używać folii. –