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

我用 matplotlib 绘制了一组 4 个箱线图,并使用不同的方法使轴的字体大小和形状相似,但其中一个子图具有不同的形状。我不知道如何解决它。我已经把我的结果放在这里了。我rcParams也在font-size每个子图中使用了它们,但它们都不能解决这个问题。如何使所有轴字体大小在形状方面相似?我知道最好定义一个可重现的问题,但我不确定我在哪一部分犯了错误,这就是我在这里编写代码的原因。代码如下:

https://img.mukewang.com/65004fbf0001a61116460826.jpg

import os

import numpy as np

import matplotlib.pyplot as plt

import pylab

import matplotlib as mpl

import pandas as pd

from matplotlib import cm

from matplotlib import rcParams

fig, 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

在代码的最后,我通过保存完成了该过程。我的意思是你在上面看到的工作对于每个子图都是重复的,我不做任何其他事情


蝴蝶刀刀
浏览 77回答 1
1回答

翻翻过去那场雪

有两种方法可以设置多个绘图的 x 轴字体大小plt.setp(ax.get_xticklabels(), fontsize=14)ax.tick_params(axis='x', labelsize=14)代码:import matplotlib.pyplot as pltdef example_plot(ax):&nbsp; &nbsp; ax.plot([1, 2])&nbsp; &nbsp; plt.setp(ax.get_xticklabels(), fontsize=14)#&nbsp; &nbsp; &nbsp;ax.tick_params(axis='x', labelsize=16)&nbsp; &nbsp;&nbsp;fig, axs = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)for ax in axs.flat:&nbsp; &nbsp; 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()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python