Secara umum, Anda mencari extent
kwarg hingga imshow
.
Sebagai contoh singkat:
import numpy as np
import matplotlib.pyplot as plt
data = np.random.random((10, 10))
fig, ax = plt.subplots()
ax.imshow(data, extent=[10, 30, np.pi, -2*np.pi])
plt.show()
![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/bIK2B.png)
Dalam contoh yang Anda berikan:
import numpy as np
import matplotlib.pyplot as plt
a = 1
theta = np.linspace(0, 2*np.pi, 100)
# We could replace the next three lines with:
# y, x = np.mgrid[-3*a:3*a:1000j, -3*a:3*a:1000j]
x = np.linspace(-3*a, 3*a, 1000)
y = np.linspace(-3*a, 3*a, 1000)
x, y = np.meshgrid(x, y)
# Now let's make something similar to your V for this example..
r = np.hypot(x, y)
V = np.cos(3*np.arctan2(y, x)) + np.sin(r) + np.cos(x)*1j * np.cos(r)
def plot(ax, data):
ax.plot(a*np.cos(theta), a*np.sin(theta), color='black')
im = ax.imshow(data, extent=[x.min(), x.max(), y.max(), y.min()])
fig.colorbar(im, ax=ax, shrink=0.5)
fig, (ax1, ax2) = plt.subplots(ncols=2)
ax1.set(title='Real Portion')
plot(ax1, V.real)
ax2.set(title='Imaginary Portion')
plot(ax2, V.imag)
plt.show()
![masukkan deskripsi gambar di sini](https://i.stack.imgur.com/puWnW.png)
Namun, Anda mungkin juga mempertimbangkan untuk menggunakan pcolormesh
dalam kasus ini. Misalnya, kita dapat mengubah fungsi plot
menjadi:
def plot(ax, data):
ax.plot(a*np.cos(theta), a*np.sin(theta), color='black')
im = ax.pcolormesh(x, y, data)
ax.set(aspect=1)
fig.colorbar(im, ax=ax, shrink=0.5)
Perbedaan utamanya adalah:
imshow
dapat melakukan interpolasi, sedangkan pcolormesh
memberikan keluaran vektor dan tidak dapat melakukan interpolasi (yaitu memplot banyak persegi panjang, bukan gambar).
pcolormesh
agak lambat, jadi untuk gambar besar, imshow
adalah pilihan yang lebih baik.
imshow
dan pcolormesh
memperlakukan luasannya sedikit berbeda. imshow
adalah "berpusat pada sel" sedangkan pcolormesh
adalah "berpusat pada mesh". Ini adalah perbedaan setengah piksel, jadi Anda dapat mengabaikannya dalam kasus ini.
imshow
akan mengatur aspek plot menjadi 1, sehingga satu unit pada arah x sama besarnya dengan satu unit pada arah y. Ini juga membalik sumbu y, secara default.
Satu catatan lain: Jika Anda memilih untuk tidak membalik sumbu y, panggil ax.invert_yaxis()
atau gunakan origin='lower'
dan extent=[xmin, xmax, ymin, ymax]
.
person
Joe Kington
schedule
30.12.2015
extent
kwarg hinggaimshow
. - person Joe Kington   schedule 30.12.2015contourf(x, y, Z)
yang merupakan kontur yang terisi. - person ssm   schedule 02.02.2016