Saya butuh bantuan dengan mengatur batas sumbu y pada matplotlib. Berikut adalah kode yang saya coba, tidak berhasil.
import matplotlib.pyplot as plt
plt.figure(1, figsize = (8.5,11))
plt.suptitle('plot title')
ax = []
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1")
ax.append(aPlot)
plt.plot(paramValues,plotDataPrice[0], color = '#340B8C',
marker = 'o', ms = 5, mfc = '#EB1717')
plt.xticks(paramValues)
plt.ylabel('Average Price')
plt.xlabel('Mark-up')
plt.grid(True)
plt.ylim((25,250))
Dengan data yang saya miliki untuk plot ini, saya mendapatkan batas sumbu y 20 dan 200. Namun, saya ingin batas 20 dan 250.
python
matplotlib
Curious2learn
sumber
sumber
plt.show()
di akhir untuk menunjukkan plot. Versi mana dan backend mana yang Anda gunakan?plt.ylim((25,250))
danplt.ylim(ymax = 250, ymin = 25)
. Saya menggunakanAgg
backend.axisbg
sekarang sudah tidak digunakan lagiJawaban:
Coba ini . Bekerja untuk subplot juga.
sumber
None
yang membuat perhitungan menjadi matplotlib, mis.axes.set_ylim([ymin,None])
Kode Anda juga berfungsi untuk saya. Namun, solusi lain adalah dengan mendapatkan sumbu plot dan kemudian hanya mengubah nilai-y:
x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))
sumber
Satu hal yang dapat Anda lakukan adalah mengatur sendiri rentang sumbu Anda dengan menggunakan matplotlib.pyplot.axis.
matplotlib.pyplot.axis
0,10 untuk rentang sumbu x. 0,20 untuk rentang sumbu y.
atau Anda juga dapat menggunakan matplotlib.pyplot.xlim atau matplotlib.pyplot.ylim
matplotlib.pyplot.ylim
sumber
Anda dapat instantiate objek dari
matplotlib.pyplot.axes
dan memanggilnyaset_ylim()
. Itu akan menjadi seperti ini:sumber
Ini berfungsi setidaknya di matplotlib versi 2.2.2:
Mungkin ini adalah cara yang bagus untuk mengatur misalnya xmin dan ymax saja, dll.
sumber
Untuk menambahkan jawaban @ Hima, jika Anda ingin mengubah batas x atau y saat ini, Anda dapat menggunakan yang berikut ini.
Saya menemukan ini sangat berguna ketika saya ingin memperkecil atau memperbesar sedikit dari pengaturan plot default.
sumber
Ini seharusnya bekerja. Kode Anda berfungsi untuk saya, seperti untuk Tamas dan Manoj Govindan. Sepertinya Anda dapat mencoba memperbarui Matplotlib. Jika Anda tidak dapat memperbarui Matplotlib (misalnya jika Anda tidak memiliki hak administratif yang memadai), mungkin menggunakan backend yang berbeda dengan
matplotlib.use()
dapat membantu.sumber
matplotlib.use('PDF')
). Saya menggunakan versi yang datang dengan versi terbaru dari Distribusi Python Enthought. Bisakah Anda melihat apakah itu bekerja dengan backend PDF. Terima kasih!plt.savefig()
?aPlot =
diplt.subplot
jalur itu bekerja untuk saya juga. Tampaknya jika seseorang memberikan subplot ke variabel seperti itu, beberapa metode lain untuk menetapkan batas sumbu harus digunakan. Benarkah?plt.ylim()
menerapkan batas ke sumbu saat ini, yang ditetapkan saat Anda melakukannyaplt.subplot()
. Saya juga tidak percaya bahwaplt.subplot()
peduli tentang bagaimana sumbu itu kembali digunakan (dimasukkan ke dalam variabel atau tidak, dll.). Jadi saya katakan itu akan berhasil; ini bekerja pada mesin saya.Hanya untuk penyetelan yang bagus. Jika Anda ingin menetapkan hanya satu dari batas sumbu dan membiarkan batas lainnya tidak berubah, Anda dapat memilih satu atau lebih dari pernyataan berikut
Lihatlah dokumentasi untuk xlim dan untuk ylim
sumber
Jika sumbu (dihasilkan oleh kode di bawah kode yang ditunjukkan dalam pertanyaan) berbagi rentang dengan sumbu pertama, pastikan bahwa Anda menetapkan rentang setelah plot terakhir sumbu itu.
sumber