2016-05-18 2 views
1

Это MWE демонстрирует проблему:Line Исчезает при использовании Контуров в Matplotlib

import numpy as np 
import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 

n = 100 
x = np.linspace(0, 1, n) 
y = np.linspace(0, 1, n) 

X, Y = np.meshgrid(x, y) 
Z = np.zeros((n, n)) 

for i in xrange(n): 
    for j in xrange(n): 
     Z[j, i] = x[i] + 10.0*y[j] 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.plot_surface(X, Y, Z) 
ax.set_xlabel('x') 
ax.set_ylabel('y') 

# add line x + y = 1 
ax.plot(X[X + Y == 1], Y[X + Y == 1], Z[X + Y == 1], '--r') 

# add contours, comment this to make line above appear 
cset = ax.contourf(X, Y, Z, zdir='z', offset=np.min(Z)) 

plt.show() 

С линией cset = ax.contourf(X, Y, Z, zdir='z', offset=np.min(Z)) закомментированной, изображение

enter image description here

Но я хочу, чтобы добавить контуры, и когда мы добавляем эту линию обратно, пунктирная линия исчезает:

enter image description here

Что дает? Кроме того, есть ли лучший способ добавить контуры?

ответ

1

Это, кажется, проблема с упорядочением различных элементов; когда я установил zorder в какой-то высокое значение в ax.plot он делает работу:

ax.plot(X[X + Y == 1], Y[X + Y == 1], Z[X + Y == 1], '--r', zorder=10) 

enter image description here

Смежные вопросы