3

私は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() 
4

1 に答える 1

3

これはかなりハックですが...

どうやら現在のリリースでは、Matplotlibは等高線上のzorderをサポートしていません。ただし、このサポートは最近トランクに追加されました

したがって、これを行う正しい方法は、1.0のリリースを待つか、先に進んでトランクから再インストールすることです。

さて、これがハックな部分です。簡単なテストを行い、618行目を変更した場合

python / site-packages / matplotlib / contour.py

zorderをcollections.LineCollection呼び出しに追加すると、特定の問題が修正されます。

col = collections.LineCollection(nlist,
   linewidths = width,
   linestyle = lstyle,
   alpha=self.alpha,zorder=100)

物事を行うための正しい方法ではありませんが、ピンチでうまくいくかもしれません。

また、トピックから外れていますが、以前の質問に対する回答を受け入れると、おそらくこの辺りでより迅速なヘルプが得られます。人々はそれらの担当者ポイントが大好きです:)

于 2010-03-24T15:53:14.013 に答える