2013-03-05 10 views

उत्तर

16

उसी ग्राफ़ की भूखंडों के विभिन्न प्रकार के गठबंधन करने के लिए आप समारोह

plt.hold (सच) का उपयोग करना चाहिए।

निम्नलिखित कोड एक 3 डी सतह साजिश के साथ एक 3 डी बिखराव साजिश भूखंडों:

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() 

परिणाम:
http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html:

http://s9.postimage.org/ge0wb8kof/3d_scatter_surface_plt.gif

आप 3 डी भूखंडों यहाँ के साथ कुछ अन्य उदाहरण देख सकते हैं

मैंने सतह की साजिश के रंगों को बदल दिया है आदेश दो भूखंडों के रंग भेद करने में एक रंग मैप 'हॉट' करने के लिए डिफ़ॉल्ट हूँ - अब , यह देखा जाता है कि सतह साजिश बिखराव साजिश को ओवरराइड करता है, ताकि की स्वतंत्र रूप से ...

संपादित करें: उस समस्या को ठीक करने के लिए, सतह की साजिश के रंगरूप में पारदर्शिता का उपयोग किया जाना चाहिए; में कोड जोड़ने: Transparent colormap और लाइन को बदलने:

ax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot); # plot a 3d surface plot 

को
ax.plot_surface(x_surf, y_surf, z_surf, cmap=theCM); 

हम पाते हैं:

http://s16.postimage.org/5qiqn0p5h/3d_scatter_surface_plt_transparent.gif

+1

इस के चारों ओर एक काम करने के लिए (हाथ से) छमाही में बिखराव की साजिश में डेटा को विभाजित (विमान और नीचे डेटा उपरोक्त डेटा) है, और फिर उचित क्रम में तीन बातें साजिश। http://stackoverflow.com/questions/14824893/how-to-draw-diagrams-like-this/14825951#14825951 – tacaswell

+0

यदि आपको 'सत्य' 3 डी प्रतिपादन की आवश्यकता है, तो उत्साह से मायावी देखें। http://code.enthought.com/projects/mayavi/ – tacaswell

+1

@tcaswell मैंने देखा कि भूखंडों के क्रम को भी बदलना, सतह हमेशा शीर्ष पर दिखाई देती है, और यह अजीब बात है ... (ज़ेडर भी काम नहीं करता है) यही कारण है कि मैंने पारदर्शिता का उपयोग करना चुना है। –

12

siluaty के उदाहरण का उपयोग करना; cmap = theCM कमांड के माध्यम से पारदर्शिता का उपयोग करने के बजाय, आप अल्फा मान समायोजित कर सकते हैं। यह आपको मिल सकता है जो आप चाहते हैं?

ax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot, alpha=0.2) 
+0

मैं जानना चाहता था कि अल्फा की तरह कुछ था, और आपकी टिप्पणी ने स्पष्ट किया! – user89

संबंधित मुद्दे