【问题标题】:Matplotlib using wide right margin - PythonMatplotlib 使用宽右边距 - Python
【发布时间】:2016-06-09 23:36:23
【问题描述】:

我正在绘制包含大量信息的数据,并且我想使用绘图的整个区域。然而,即使使用tight_layout,我最终也会得到一个“宽”的右边距。例如:

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 可以扩大。

【问题讨论】:

    标签: python layout matplotlib plot margin


    【解决方案1】:

    你可以通过设置xlim来剪切右边距。在您设置xticks 之后,在您的代码中添加plt.xlim(0, 364)。您可以根据您提供的两个值确定沿 x 轴绘制的任何部分。使用实际数据时,最好使用x arrayminmax 值。在您提供的示例中,这意味着:plt.xlim(min(y), max(y))

    【讨论】:

    • 完美!我不知道我是怎么忘记这个属性的!
    【解决方案2】:

    你可以通过以下方式做到这一点:

    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-01
      • 2015-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      相关资源
      最近更新 更多