【问题标题】:overlapping extra ticks and labels from different scale shown显示不同比例的重叠额外刻度和标签
【发布时间】:2020-02-06 04:42:40
【问题描述】:

我正在尝试使用 matplotlib 绘制多个子图,但在出现额外比例时遇到了麻烦。我希望ax.label_outer() 只显示它看起来的外部标签,但是在 x 和 y 轴上有一组额外的刻度,都是 0-1,我不需要。它们是默认值吗?从哪里?有人可以告诉我如何摆脱它们吗?

#%%
%matplotlib inline 
import matplotlib.pyplot as plt
import numpy as np

%config InlineBackend.figure_format ='retina'

#%%
nrows, ncols = 2, 3

# https://stackoverflow.com/questions/28070906/loop-over-2d-subplot-as-if-its-a-1-d
fig, axes = plt.subplots(nrows = nrows, ncols=ncols, figsize=(20,10), sharex=True, sharey=True)
plt.subplots_adjust(hspace=.4, wspace=.2, top=.90)
num = 1

x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)
num = 1

for ax in axes.flatten()[:5]:

    stationName = 'Title - ' + str(num)

    ax = fig.add_subplot(nrows, ncols, num)
    #plt.setp(ax.get_xticklabels(), visible=False)
    #plt.setp(ax.get_yticklabels(), visible=False)


    ax.plot(x,y)
    ax.yaxis.grid(color='gray', linestyle='dashed')
    #ax.xaxis.set_tick_params(length=0)
    #ax.yaxis.set_tick_params(length=0)
    plt.title(stationName, loc='center', fontsize=15, fontweight=0, color='green' )
    num = num + 1
fig.delaxes(axes[-1,-1])
fig.suptitle('Temperature', fontsize=20)


for ax in axes.flat:
    ax.set(xlabel='Years', ylabel='Records') 

for ax in axes.flat:
    ax.label_outer()   
# https://towardsdatascience.com/all-your-matplotlib-questions-answered-420dd95cb4ff    
plt.show();

【问题讨论】:

  • 对于axes 中已经存在的每个轴,您似乎在现有轴的相同位置添加了另一个轴(通过.add_subplot)。所以每个子图位置有两个轴。
  • 谢谢!那行得通,但我不得不稍微改变一下我写标题的方式。我能以某种方式感谢你以表扬你吗?

标签: python matplotlib


【解决方案1】:

@ImportanceofBeingEarnest 的回答帮助了我,我只需要编辑我创建标题的方式。我的新代码是:

#%%
%matplotlib inline 
import matplotlib.pyplot as plt
import numpy as np

%config InlineBackend.figure_format ='retina'

#%%
nrows, ncols = 2, 3

# https://stackoverflow.com/questions/28070906/loop-over-2d-subplot-as-if-its-a-1-d
fig, axes = plt.subplots(nrows = nrows, ncols=ncols, figsize=(20,10), sharex=False, sharey=True)
plt.subplots_adjust(hspace=.4, wspace=.2, top=.90)
num = 1

x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)
num = 1

for ax in axes.flatten()[:5]:

    stationName = 'Title - ' + str(num)
    ax.plot(x,y,color='blue')
    ax.plot(x,-y,color='red' )
    ax.yaxis.grid(color='gray', linestyle='dashed')
    ax.set(xlabel='Years', ylabel='Records') 
    ax.set_title(stationName, fontdict={'fontsize': 15, 'fontweight': 0, 'color':'green', 'ha':'center'}) 
    num = num + 1
fig.delaxes(axes[-1,-1])
fig.suptitle('Temperature', fontsize=20)

plt.show();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2019-05-11
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多