猿问

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

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

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

相关分类

Python
我要回答