一、問題描述
具體問題是:
- 用python庫matplotlib進行數據的圖表展示;
- 橫坐標是自定義統計值;
- 保存矢量圖(svg),保存后發現橫坐的第一個點離坐標原點距離較大,導致圖形離y軸較遠,讓畫出的圖看着不舒服;
- 如果用jpg圖片發現也有這個問題,但是控制台有參數可以調整,自動保存圖片則需要參數控制。
二、解決辦法
解決思路:
- 查一下相關坐標軸的參數。
解決辦法:
- 方法1:
- 通過參數:ax.set_xlim(-1,)顯示制定橫坐標的范圍。
- 這種方法橫坐標多余的(坐標軸右邊的)不會顯示。
- 方法2:
- 參數ax.yaxis.set_ticks_position('left')設置向左移動
- 參數:ax.spines['left'].set_position(('data', -1))設置距離
- 這種方法是移動縱坐標的坐標軸,會顯示坐標軸右邊的橫軸和數據。
方法1示例:

1 import pandas as pd 2 import matplotlib.pyplot as plt 3 data = pd.read_csv('statistic_char.csv',index_col=0) 4 5 fig, ax = plt.subplots() 6 #ax = plt.gca() 7 plt.plot(list(data.index),data) 8 plt.yticks(range(0,35000000,2000000)) 9 10 fig.set_figwidth(15) 11 fig.tight_layout() 12 ax.set_xlim(-1,) 13 #ax.yaxis.set_ticks_position('left') 14 #ax.spines['left'].set_position(('data', 0)) 15 plt.show()
方法2示例:

1 import pandas as pd 2 import matplotlib.pyplot as plt 3 data = pd.read_csv('statistic_char.csv',index_col=0) 4 fig, ax = plt.subplots() 5 plt.plot(list(data.index),data) 6 plt.yticks(range(0,35000000,2000000)) 7 fig.set_figwidth(15) 8 fig.tight_layout() 9 ax.yaxis.set_ticks_position('left') 10 ax.spines['left'].set_position(('data', -1)) 11 plt.show()
設置圖形離 **X** 軸的距離的參數:

1 ax.xaxis.set_ticks_position('bottom') 2 ax.spines['bottom'].set_position(('data', 0))
三、相關參考
- 坐標軸相關的官方文檔:
- 設置圖形離 **Y** 軸的距離:
- https://matplotlib.org/api/_as_gen/matplotlib.axis.YAxis.set_ticks_position.html#matplotlib.axis.YAxis.set_ticks_position
- https://matplotlib.org/api/spines_api.html?highlight=spines#matplotlib.spines.Spine.set_position
- https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.set_xlim.html?highlight=set_xlim