好吧,我想你的版本,但遺憾的是我不能讓他們的工作,因爲有一些縮放和PDF定位的東西,讓我(和你的代碼的建議)嚴重混亂。但通過測試他們,我又學到了很多python,謝謝!
我終於找到了一個解決方案,它不是非常準確,但滿足了我的需求。這是我如何做到的。
在我的版本中,一公里除以名爲STEP_PART的合適整數常量。 STEP_PART越大,軸數值越精確(如果數值太大,軸會變得雜亂無章)。例如,如果STEP_PART爲5,則精確度爲1 km/5 = 200 m,並且每隔200 m標記一次。
STEP_PART = 5 # In the start of the program.
height = 6.42 # These are actually given elsewhere,
width = 4.37 # but just as example...
vHeight = range(0, int(STEP_PART*height), 1) # Make tick vectors, now in format
# 0, 1, 2... instead of 0, 0.2...
vWidth = range(0, int(STEP_PART*width), 1) # Should be divided by STEP_PART
# later to get right values.
爲了避免過多的軸標籤(0,1,2 ...足夠,0,0.2,0.4 ... ...是太多了),我們替換非整公里值與字符串「 」。同時,我們通過STEP_PART分割整數km值以獲得正確的值。
for j in range(len(vHeight)):
if (j % STEP_PART != 0):
vHeight[j] = ""
else:
vHeight[j] = int(vHeight[j]/STEP_PART)
for i in range(len(vWidth)):
if (i % STEP_PART != 0):
vWidth[i] = ""
else:
vWidth[i] = int(vWidth[i]/STEP_PART)
後來,創建圖形和座標軸後,以這種方式放置刻度(以x軸爲例)。在那裏,x是圖片的實際寬度,用shape()命令得到了(我不完全明白......在我修改的代碼中有很多縮放和東西)。
xt = np.linspace(0,x-1,len(vWidth)+1) # For locating those ticks on the same distances.
locs, labels = mpl.xticks(xt, vWidth, fontsize=9)
重複y軸。結果是一個圖表,其中每200米標記一個數字標籤,而整數km值標記數據標籤。無論如何,這些軸的精度是200米,這不是確切的,但它對我來說已經足夠了。這個腳本會更好,如果我找到如何增長整數蜱的大小...
相關:http://stackoverflow.com/questions/4947682/intelligently-calculating-chart-tick-positions –