DÜZENLEME: Lütfen tom10'un cevabına bakınız. Onun çözümü, dışlanan kısmın değerlerini np.nans olarak ayarlayarak çalışır.
Matplotlib'in plot_surface'i np.nans'ı koordinat olarak kabul etmiyor gibi görünüyor, bu da işe yaramıyor. Sorunuzu doğru bir şekilde anlarsam, o zaman en azından bir bant bant çözümü sunuyoruz:
MEVIS3000 gibi "kesilen" noktaları sıfırlamak yerine, bunları bu boyuttaki son değere ayarlarsınız. o zaman 2d dizilerinizin hepsi aynı boyuta sahip olacak ve yüzey oradan kesilmiş gibi görünecektir.
Daha net hale getirmek için örneğinize bazı veri noktaları ekledim. Biz yerini böylece biz diziler ayarlarsanız, Şimdi
:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
X = np.array([[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
])
Y = np.array([[0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1],
[2, 2, 2, 2, 2, 2],
])
Z = np.array([[0.5, 0.4, 0.35, 0.32, 0.312, 0.3],
[0.9, 0.7, 0.60, 0.55, 0.525, 0.5],
[1.0, 1.1, 1.20, 1.30, 1.400, 1.5],
])
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X,Y,Z)
plt.show()
çıkan yüzey (baş itibaren) şöyle görünür: Bu (tüm yüzey görünür) başlangıç noktasıdır bu satırdaki önceki değerlerle "eksik" değerleri biz yüzeyinin bir bölümünü dışarıda bırakabilir:
X = np.array([[0, 1, 2, 2, 2, 2], # Notice the sequence 0, 1, 2, 2, 2...
[0, 1, 2, 3, 3, 3], # Here starting from 3
[0, 1, 2, 3, 4, 4], # Here starting from 4
])
Y = np.array([[0, 0, 0, 0, 0, 0], # Here we don't need to do anything
[1, 1, 1, 1, 1, 1],
[2, 2, 2, 2, 2, 2],
])
Z = np.array([[0.5, 0.4, 0.35, 0.35, 0.35, 0.35], # Here like in X: repeats from 0.35
[0.9, 0.7, 0.60, 0.55, 0.55, 0.55],
[1.0, 1.1, 1.20, 1.30, 1.40, 1.40],
])
çıkan grafiği (aynı görünümden tekrar) şöyle görünür:
Bu oldukça düzeltici bir çözüm değil, ancak bunu yapmanın bir yolu. Seni bir şekilde "cutoff" 'u otomatikleştirme problemi ile bırakacağım.
Temiz çözüm! Bunu denemeye devam ettim, ancak eksik olan değerlerle başa çıkmak için sınırları belirlemem gerektiğini fark etmemiştim. – Crebit
@Crebit: Teşekkürler. Matplotlib'in sınır hesaplamalarında nansları görmezden gelmesi gerektiği anlaşılıyor. Belki şimdi yapmanın bir yolu var, ya da bir hata raporu/özellik isteğine değer olabilir. – tom10