プロットを生成するデータ配列はありません。代わりに、プロットに使用される多くの配列がクリギングプロット関数内で生成されます。
塗りつぶした輪郭線を輪郭線に変更することは、もちろんスタイルオプションではありません。したがって、元のプロット関数からコードを使用する必要があります。
オプションはkriging
をサブクラス化し、カスタムプロット関数(myplot
と呼ぶ)を実装することです。この機能ではcontourf
の代わりにcontour
を使用できます。当然ながら、それを自分のニーズに完全に変えることも可能です。
import pyKriging
from pyKriging.krige import kriging
from pyKriging.samplingplan import samplingplan
import numpy as np
import matplotlib.pyplot as plt
class MyKriging(kriging):
def __init__(self,*args,**kwargs):
kriging.__init__(self,*args,**kwargs)
def myplot(self,labels=False, show=True, **kwargs):
fig = plt.figure(figsize=(8,6))
# Create a set of data to plot
plotgrid = 61
x = np.linspace(self.normRange[0][0], self.normRange[0][1], num=plotgrid)
y = np.linspace(self.normRange[1][0], self.normRange[1][1], num=plotgrid)
X, Y = np.meshgrid(x, y)
# Predict based on the optimized results
zs = np.array([self.predict([xi,yi]) for xi,yi in zip(np.ravel(X), np.ravel(Y))])
Z = zs.reshape(X.shape)
#Calculate errors
zse = np.array([self.predict_var([xi,yi]) for xi,yi in zip(np.ravel(X), np.ravel(Y))])
Ze = zse.reshape(X.shape)
spx = (self.X[:,0] * (self.normRange[0][1] - self.normRange[0][0])) + self.normRange[0][0]
spy = (self.X[:,1] * (self.normRange[1][1] - self.normRange[1][0])) + self.normRange[1][0]
contour_levels = kwargs.get("levels", 25)
ax = fig.add_subplot(222)
CS = plt.contour(X,Y,Ze, contour_levels)
plt.colorbar()
plt.plot(spx, spy,'or')
ax = fig.add_subplot(221)
if self.testfunction:
# Setup the truth function
zt = self.testfunction(np.array(zip(np.ravel(X), np.ravel(Y))))
ZT = zt.reshape(X.shape)
CS = plt.contour(X,Y,ZT,contour_levels ,colors='k',zorder=2, alpha=0)
if self.testfunction:
contour_levels = CS.levels
delta = np.abs(contour_levels[0]-contour_levels[1])
contour_levels = np.insert(contour_levels, 0, contour_levels[0]-delta)
contour_levels = np.append(contour_levels, contour_levels[-1]+delta)
CS = plt.contour(X,Y,Z,contour_levels,zorder=1)
plt.plot(spx, spy,'or', zorder=3)
plt.colorbar()
ax = fig.add_subplot(212, projection='3d')
ax.plot_surface(X, Y, Z, rstride=3, cstride=3, alpha=0.4)
if self.testfunction:
ax.plot_wireframe(X, Y, ZT, rstride=3, cstride=3)
if show:
plt.show()
sp = samplingplan(2)
X = sp.optimallhc(20)
testfun = pyKriging.testfunctions().branin
y = testfun(X)
k = MyKriging(X, y, testfunction=testfun, name='simple')
k.train()
k.myplot()

あなたのフォーマットスタイルは何ですか?まずそれらを設定してから 'k.plot()'を呼ぶだけです。 – ImportanceOfBeingErnest
これを見つけるために 'kringing'文書やコードを検索することを期待していますか?答えはコードにあります。これは一般的ではない質問です。 'pandas'では' .values'メソッドを使ってデータフレームから配列を取り出します。 – hpaulj
この質問は 'github'または' pyKriging'サイトで直接聞いてください。これは複雑なコードで、@ hpauljが指摘したように、誰もコードを読んで答えを得ることはありません。 –