我正在使用Matplotlib来生成隐式方程的图(例如,y ^ x = x ^ y)。非常感谢我已经收到的帮助,我已经相当远了。我用了一条轮廓线来制作情节。我剩下的问题是格式化轮廓线,例如宽度,颜色,尤其是zorder,其中轮廓出现在我的网格线后面。当然,在绘制标准函数时,这些工作正常。
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
import numpy as np
fig = plt.figure(1)
ax = fig.add_subplot(111)
# set up axis
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# setup x and y ranges and precision
x = np.arange(-0.5,5.5,0.01)
y = np.arange(-0.5,5.5,0.01)
# draw a curve
line, = ax.plot(x, x**2,zorder=100,linewidth=3,color='red')
# draw a contour
X,Y=np.meshgrid(x,y)
F=X**Y
G=Y**X
ax.contour(X,Y,(F-G),[0],zorder=100,linewidth=3,color='green')
#set bounds
ax.set_xbound(-1,7)
ax.set_ybound(-1,7)
#add gridlines
ax.xaxis.set_minor_locator(MultipleLocator(0.2))
ax.yaxis.set_minor_locator(MultipleLocator(0.2))
ax.xaxis.grid(True,'minor',linestyle='-',color='0.8')
ax.yaxis.grid(True,'minor',linestyle='-',color='0.8')
plt.show()
答案 0 :(得分:3)
这是相当hackish但是......
显然在当前版本中,Matplotlib不支持轮廓上的zorder。但是,这种支持was recently added to the trunk。
因此,正确的方法是等待1.0版本或者继续从trunk中重新安装。
现在,这是hackish部分。我做了一个快速测试,如果我在
中更改了第618行蟒/站点包/ matplotlib / contour.py
在collections.LineCollection调用中添加zorder,它可以修复您的具体问题。
col = collections.LineCollection(nlist,
linewidths = width,
linestyle = lstyle,
alpha=self.alpha,zorder=100)
不是正确的做事方式,但可能只是紧张工作。
同样偏离主题,如果你接受对之前问题的一些回答,你可能会在这里获得更快的帮助。人们喜欢那些代表点:)