2016-02-26 86 views
1

我正在繪製具有大量信息的數據,我想使用該圖的整個區域。但是,即使使用tight_layout,我也會得到一個「寬」的右邊距。例如:Matplotlib使用寬右邊距 - Python

import matplotlib 
import matplotlib.pyplot as plt 

cmap = plt.get_cmap('Set3') 
colors = [cmap(i) for i in numpy.linspace(0, 1, 18)] 

data = numpy.random.rand(18, 365) 

y = range(365) 
plt.figure(figsize=(15,7)) 
for i in range(18): 
    plt.plot(y, data[i, :], color=colors[i], linewidth=2) 
plt.xticks(numpy.arange(0, 365, 10)) 
plt.tight_layout() 

可生產類似:

enter image description here

我想知道如何擺脫這種權利保證金,所以使用的可擴展xtikcs

回答

1

您可以通過設置xlim來削減右邊距。在設置xticks後,在您的代碼中添加plt.xlim(0, 364)。您可以根據您提供的兩個值確定繪製沿x軸的任何截面。使用實際數據時,最好使用x arrayminmax值。在你提供的例子中,這意味着:plt.xlim(min(y), max(y))

+0

完美!我不知道我是如何忘記這個屬性的! – pceccon

0

你能做到這一點通過以下方式:

import matplotlib 
import matplotlib.pyplot as plt 
import numpy as np 

cmap = plt.get_cmap('Set3') 
colors = [cmap(i) for i in np.linspace(0, 1, 18)] 

data = np.random.rand(18, 365) 

y = range(365) 
fig, ax = plt.subplots(figsize=(15,7)) 
for i in range(18): 
    ax.plot(y, data[i, :], color=colors[i], linewidth=2) 
ax.set_xticks(np.arange(0, 365, 10)) 
ax.set_xlim(ax.xaxis.get_data_interval()) 
fig.tight_layout() 

它是稍微更Python。