Matplotlib 2.0.0のバージョンを使用して、与えられたデータで密度プロットを作成し、2軸x、yのログスケールを使用しようとしています。私は次のコードを作った、問題は、ログプロットのケースでは、正しい機能的な動作を与えていないことです。matplotlibのログログ密度 - 色プロット
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
init = 0.0
points = 500
final_value = 100
steep = (final_value-init)/points
list_values_x = np.arange(init,final_value,steep)
list_values_y = np.arange(init,final_value,steep)
#WE CREATE OUT DATA FILE
f1 = open("data.txt", "w")
for i in list_values_x:
for j in list_values_y:
f1.write(str(i) +" "+str(j)+" "+str(0.0001*(i**2+j**2)) +"\n")
f1.close()
#NOW WE OPEN THE FILE WITH THE DATA AND MAKE THE PLOT
x,y,temp = np.loadtxt('data.txt').T #Transposed for easier unpacking
nrows, ncols = points, points
grid = temp.reshape((nrows, ncols))
# LINEAR PLOT
fig1 = plt.imshow(grid, extent=(x.min(), x.max(), y.max(), y.min()),
interpolation='nearest', cmap=cm.gist_rainbow)
plt.axis([x.min(), x.max(),y.min(), y.max()])
plt.colorbar()
plt.suptitle('Example', fontsize=15)
plt.xlabel('x', fontsize=16)
plt.ylabel('y', fontsize=16)
plt.show()
# LOG-LOG PLOT
fig, (ax1) = plt.subplots(ncols=1, figsize=(8, 4))
ax1.imshow(grid, aspect="auto", extent=(1, 1e2, 1, 1e2), interpolation='nearest')
ax1.set_yscale('log')
ax1.set_xscale('log')
ax1.set_title('Example with log scale')
plt.show()
私がプロットを作成するために使用しているデータは無関係ですが、単なる例です。したがって、最初のプロットは線形のスケールで与えられます。 2番目のプロットは対数尺度で与えられていますが、間違っていることは明らかです.2つのプロットは全く異なるので、同じデータを使用しています。また、私は両対数プロット
になぜこれが起こるすべてのアイデアをカラーバーを置く方法がわかりませんか?ご注意いただきありがとうございます。
PD:対数プロットを構築するために、私はエクステントキーワード及びそれを用いた(http://matplotlib.org/devdocs/users/whats_new.html#non-linear-scales-on-image-plots)
良い仕事:ここ
は完全な例です!これはうまくいく。ありがとう – Joe