fill_betweenでwhereを認識させたい
plt.fill_betweenでgreenの部分しか表示されません。どうすれば意図したグラフが得られるでしょうか? (-が入っているから認識されない?)
知っている方はぜひ教えていただけると助かります。
import matplotlib.pyplot as plt
import numpy as np
f1 = np.loadtxt(filepath1)
f2 = np.loadtxt(filepath2)
x1, z1 = f1[:, 0], f1[:, 1]
x2, z2 = f2[:, 0], f2[:, 1]
##
plt.xlabel('X') # x軸のラベル
plt.ylabel('Z') # y軸のラベル
plt.plot(x1, z1, color="Black", alpha=0.8, linewidth=4.0, label="data1")
plt.plot(x2, z2, color="White", alpha=0.8, linewidth=4.0, label="data2")
plt.legend()
plt.fill_between(x1, z1, z2, where=z2>=z1, facecolor='green', interpolate=True)
plt.fill_between(x1, z1, z2, where=z2<=z1, facecolor='red', interpolate=True)
# その他,描画用オプション
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
plt.ylim([-21.62, -21.46])
plt.grid(True) #グラフの枠を作成
plt.savefig("cm.png")
plt.show()
fig = plt.figure()
txtの中身は (x, z)
の二次元配列です。
真のデータ
16.8180 -21.4740
17.0484 -21.6070
17.2787 -21.4740
17.4480 -21.4740
17.6784 -21.6070
17.9087 -21.4740
18.0780 -21.4740
18.3084 -21.6070
18.5387 -21.4740
18.7080 -21.4740
18.9384 -21.6070
19.1687 -21.4740
19.3380 -21.4740
19.5684 -21.6070
19.7987 -21.4740
一部回転B
16.8180 -21.4740
17.0484 -21.5070
17.2787 -21.4740
17.4480 -21.4740
17.6784 -21.6570
17.9087 -21.4740
18.0780 -21.4740
18.3084 -21.6070
18.5387 -21.4740
18.7080 -21.4740
18.9384 -21.6070
19.1687 -21.4740
19.3380 -21.4740
19.5684 -21.6070
19.7987 -21.4740
プログラムを訂正したところ次のようなエラーが表示されました。
Traceback (most recent call last):
File "<ipython-input-24-32532a3f4e19>", line 1, in <module>
runfile('C:/Users/Administartor/Desktop/いいべ.py', wdir='C:/Users/Administartor/Desktop')
File "C:\Users\Administartor\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "C:\Users\Administartor\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/Administartor/Desktop/いいべ.py", line 46, in <module>
plt.fill_between(x1, z1, z2, where=z2>=z1, facecolor='green', interpolate=True)
ValueError: operands could not be broadcast together with shapes (3031,) (15,)