Matplotlib 使用宽右边距 - Python
Matplotlib using wide right margin - Python
我正在绘制包含大量信息的数据,我想使用绘图的整个区域。然而,即使使用 tight_layout
,我最终得到的是 "wide" 右边距。例如:
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()
生成如下内容:
我想知道如何去掉右边距,这样 xtikcs
就可以展开了。
您可以通过设置xlim
来削减右边距。在您的代码中,在设置 xticks
之后添加 plt.xlim(0, 364)
。您可以根据您提供的两个值确定沿 x 轴绘制的任何部分。使用实际数据时,最好使用 x array
的 min
和 max
值。在您提供的示例中,这意味着:plt.xlim(min(y), max(y))
.
您可以通过以下方式完成:
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()
稍微有点pythonic。
我正在绘制包含大量信息的数据,我想使用绘图的整个区域。然而,即使使用 tight_layout
,我最终得到的是 "wide" 右边距。例如:
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()
生成如下内容:
我想知道如何去掉右边距,这样 xtikcs
就可以展开了。
您可以通过设置xlim
来削减右边距。在您的代码中,在设置 xticks
之后添加 plt.xlim(0, 364)
。您可以根据您提供的两个值确定沿 x 轴绘制的任何部分。使用实际数据时,最好使用 x array
的 min
和 max
值。在您提供的示例中,这意味着:plt.xlim(min(y), max(y))
.
您可以通过以下方式完成:
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()
稍微有点pythonic。