为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 matplotlib 中使子图中的轴字体大小相似?

如何在 matplotlib 中使子图中的轴字体大小相似?

蝴蝶刀刀 2023-09-12 19:46:17
我用 matplotlib 绘制了一组 4 个箱线图,并使用不同的方法使轴的字体大小和形状相似,但其中一个子图具有不同的形状。我不知道如何解决它。我已经把我的结果放在这里了。我rcParams也在font-size每个子图中使用了它们,但它们都不能解决这个问题。如何使所有轴字体大小在形状方面相似?我知道最好定义一个可重现的问题,但我不确定我在哪一部分犯了错误,这就是我在这里编写代码的原因。代码如下:import osimport numpy as npimport matplotlib.pyplot as pltimport pylabimport matplotlib as mplimport pandas as pdfrom matplotlib import cmfrom matplotlib import rcParamsfig, axs = plt.subplots(2, 2,sharex=True,sharey=True)plt.rcParams.update({'font.size': 20})root = r'C:\Users\Master Candidate\Desktop\New folder\Desktop\Out\NEW SCENARIO\Intersection\Beta 10\intersection'xx=[]percentage=[]labels = []gg=[]my_list = os.listdir(root)my_list =  [file for file in sorted(my_list) if os.path.isdir(os.path.join(root, file))]my_list= sorted(my_list)percetanges = []for directory in my_list:    CASES = [file for file in os.listdir(os.path.join(root, directory)) if file.startswith('config')]       if len(CASES)==0:        continue    CASES=sorted(CASES)        percentage=[]       for filename in CASES:                with open(os.path.join(root, directory,filename), "r") as file:             lines = file.readlines()            x = [float(line.split()[0]) for line in lines]            y = [float(line.split()[1]) for line in lines]            g = np.linspace(min(y),max(y),100)            h = min(y)+6            t = max(y)-6            xx=[]            for i in range(1,len(x)):                if (y[i] < h or y[i] > t):                    xx.append(x[i])            percent = len(xx)/len(y)        percentage.append(percent)           labels.append(directory)        labels=sorted(labels)    percetanges.append(percentage)for i, x in enumerate(percetanges):    axs[0, 0].boxplot(x,positions=[i],whis=0.001,widths = 0.6)plt.xticks(np.arange(len(labels)),labels)plt.grid()plt.ylim((0,1))...the same strategy for the rest of 3 subplots在代码的最后,我通过保存完成了该过程。我的意思是你在上面看到的工作对于每个子图都是重复的,我不做任何其他事情
查看完整描述

1 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

有两种方法可以设置多个绘图的 x 轴字体大小


plt.setp(ax.get_xticklabels(), fontsize=14)

ax.tick_params(axis='x', labelsize=14)

代码:


import matplotlib.pyplot as plt


def example_plot(ax):

    ax.plot([1, 2])

    plt.setp(ax.get_xticklabels(), fontsize=14)

#     ax.tick_params(axis='x', labelsize=16)

    

fig, axs = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)


for ax in axs.flat:

    example_plot(ax)


fig.suptitle('sub title', fontsize=16)

fig.text(0.5, 0.04, '$Cr$', ha='center', va='center', fontsize=16)

fig.text(0.06, 0.5, '$a$', ha='center', va='center', rotation='vertical', fontsize=16)


plt.show()

https://img1.sycdn.imooc.com//65004fd60001645b04120287.jpg

查看完整回答
反对 回复 2023-09-12
  • 1 回答
  • 0 关注
  • 54 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信