2016-01-24 80 views
1

我想創建一個主要和次要蜱以及主要和次要網格線的情節。我希望網格線等距,但下面的代碼中,網格線不是等間距的。我該如何解決它?matplotlib繪圖中的Equi間隔網格線

mnt = MonthLocator(range(1, 13), bymonthday=1, interval=2) 
mnt_fmt = DateFormatter("%b '%y") 
ax.xaxis.set_major_locator(mnt) 
ax.xaxis.set_major_formatter(mnt_fmt) 
ax.xaxis.set_minor_locator(MaxNLocator(20)) 
ax.yaxis.set_major_locator(MaxNLocator(5)) 
ax.yaxis.set_minor_locator(MaxNLocator(20)) 
# Create nice-looking grid for ease of visualization 
ax.grid(which='minor', alpha=0.2) 
ax.grid(which='major', alpha=0.5) 

編輯 enter image description here

+1

你問爲什麼主要的勾號增量是不同的X軸與Y軸?如果是這樣,這是因爲您在x軸上每月定位(30個單位,由於mpl處理日期的方式),而y軸上每20個單位。但是,如果您問爲什麼y軸上的20個單位的物理尺寸與x軸上的20個單位不同,這是因爲未設置圖的縱橫比。如果你想要網格的完美平方,使用'ax.set(aspect = 1)'或'ax.axis('equal')'將其設置爲1。 –

+1

謝謝@JoeKington,添加了我所看到的照片。 x軸上的次要滴答不是等間隔w.r.t主要滴答。例如在2014年5月和7月之間,2014年5月的主要價格與次要價格之間的距離與2014年7月的主要價格之間的距離以及在此之前的次要價格之間的差距也是 – user308827

+0

@JoeKington也不會設置「ax.axis( '平等')'爲1,不要使情節成爲正方形?我的一些情節是矩形 – user308827

回答

1

實際上是你看到的在x軸標記每月第一天的和標記天每一個「X」號之間的區別。

您已將主要滴答定位在每個月的第一個位置。但是,您已將次要標記設置爲每5天定位一次。

因爲每個月的第一個不是均勻間隔的,所以主要的滴答不會均勻分佈。然而,小蜱總是相隔5天。因此,您會看到x軸上主要和次要勾號的相對間距的變化。

最後,你必須決定你想要哪一個更多:每個月的第一個滴答,或定期滴答滴答。不幸的是,你們不能兼得。