gpt4 book ai didi

matplotlib - 如何在 Matplotlib 中为共享 x 轴使用相同的标签?

转载 作者:行者123 更新时间:2023-12-05 03:09:29 25 4
gpt4 key购买 nike

我正在尝试将两个单独的图形转换为一个共享 x 轴的图形。但是我缺少一些东西。对于样式和刻度,我通常使用代码

plt.xlabel(r'$\mathrm{2\theta\ (deg)}$')
plt.ylabel(r'$\mathrm{Intensity\ (a.u)}$')
plt.xlim(15,80)

plt.legend(loc=4,prop={'size':10})
params = {'legend.fontsize': 18,
'axes.labelsize': 18,
'axes.titlesize': 18,
'xtick.labelsize' :12,
'mathtext.fontset': 'cm',
'mathtext.rm': 'serif', }
matplotlib.rcParams.update(params)

plt.tick_params(
axis='both', which='both',
right='off', left='off',
top = 'off', bottom = 'off',
labelleft='off')

现在,我需要将其应用于此共享图形。其中包括:

  • 图上没有刻度。
  • 将共享轴标签。
  • 最好在循环中加载文本文件。

对于这些改进,我需要了解什么?

enter image description here

import matplotlib.pyplot as plt
from numpy import loadtxt
import matplotlib

f = plt.figure()
plt.subplots_adjust(hspace=0.001)

data = loadtxt("ES1.txt",float)

POS = data[:,0]
ESD = data[:,1]

ax1 = plt.subplot(311)
ax1.plot(POS, ESD, color="blue")


data = loadtxt("ES2.txt",float)

POS = data[:,0]
ESD = data[:,1]


ax2 = plt.subplot(312, sharex=ax1)
ax2.plot(POS, ESD, color="red")


yticklabels = ax1.get_yticklabels() + ax2.get_yticklabels()
plt.setp(yticklabels, visible=False)


plt.savefig('shared_xrd' + '.png', dpi=600, bbox_inches='tight')

最佳答案

可能是下面的代码更像您想要的。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib

params = {'legend.fontsize': 18,
'axes.labelsize': 18,
'axes.titlesize': 18,
'xtick.labelsize' :12,
'mathtext.fontset': 'cm',
'mathtext.rm': 'serif',
"xtick.bottom" : False,
"ytick.left" : False,
}
matplotlib.rcParams.update(params)

f, axes = plt.subplots(nrows=2, sharex=True)

plt.subplots_adjust(hspace=0.001, bottom=0.2)

colors=["blue", "red"]

for i in [0,1]:
data = np.loadtxt("ES{}.txt".format(i+1))
POS = data[:,0]
ESD = data[:,1]
axes[i].plot(POS, ESD, color=colors[i], label="data{}".format(i))
axes[i].legend(loc=4,prop={'size':10})

# make ticks invisble
axes[0].set_yticks([])
axes[1].set_yticks([])

plt.xlabel(r'$\mathrm{2\theta\ (deg)}$')
plt.xlim(15,80)

#create subplot just for placing the ylabel centered on all plots
shadowaxes = f.add_subplot(111, xticks=[], yticks=[], frame_on=False)
shadowaxes.set_ylabel(r'$\mathrm{Intensity\ (a.u)}$')

plt.savefig(__file__ + '.png', dpi=600, bbox_inches='tight')
plt.show()

enter image description here

关于matplotlib - 如何在 Matplotlib 中为共享 x 轴使用相同的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42644164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com