我尝试使用以下代码生成一组条形图。可以看出(如果你在jupyter笔记本中运行代码),图1和图3工作正常,但图2和图4有问题。我的y轴刻度标签设置似乎无法覆盖原始标签,因此图中显示了两者。有人可以帮我调试吗?谢谢。
代码:
from matplotlib import rc
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.figure as fig
import numpy as np
import math
cr1=[4.19,3.71,2.78,2.19,2.17,3.05,5.23,9.86,19.44,39.35,74.86,160.09]
cr2=[340.94,349.54,343.75,345.88,390.87,298.74,343.07,310.83,265.43,97.25,126.49,90.03]
cr3=[1.51,1.51,1.51,1.51,1.51,2.48,5.01,9.80,20.43,45.92,90.24,464.10]
cr4=[1.54,1.64,1.76,1.90,1.99,1.72,1.29,1.29,1.29,2.31,4.57,8.56]
CR = np.array([cr1,cr2,cr3,cr4])
plt.rc('text', usetex=True)
plt.rc('font',**{'family':'serif','serif':['cm'],'size':30})
plt.rc('legend', fontsize=25)
fig, axes = plt.subplots(nrows=2, ncols=2, sharex=True,figsize=(20,20))
ind = np.arange(12)
axes[0][0].bar(ind, CR[0], width=0.3,log=True)
axes[0][1].bar(ind, CR[1], width=0.3,log=True)
axes[1][0].bar(ind, CR[2], width=0.3,log=True)
axes[1][1].bar(ind, CR[3], width=0.3,log=True)
plt.setp(axes, xticks=[1,2,3,4,5,6,7,8,9,10,11,12],
xticklabels=[r"\textbf{1e-11}",'','','','','',r"\textbf{1e-5}",'','','','',r"\textbf{1e-0}"])
axes[0][0].set_title(r"\textbf{astro}")
axes[0][0].set_yticks([10,100])
axes[0][0].set_yticklabels([r"\boldmath{$1\mathrm{e}{1}$}",r"\boldmath{$1\mathrm{e}{2}$}"])
axes[0][1].set_title(r"\textbf{blast2}")
axes[0][1].set_yticks([100,200,300,400])
axes[0][1].set_yticklabels([r"\boldmath{$1\mathrm{e}{2}$}",r"\boldmath{$2\mathrm{e}{2}$}",r"\boldmath{$3\mathrm{e}{2}$}",r"\boldmath{$4\mathrm{e}{2}$}"])
axes[1][0].set_title(r"\textbf{bump}")
axes[1][0].set_yticks([10,100])
axes[1][0].set_yticklabels([r"\boldmath{$1\mathrm{e}{1}$}",r"\boldmath{$1\mathrm{e}{2}$}"])
axes[1][1].set_title(r"\textbf{dpot}")
axes[1][1].set_yticks([2,4,6])
axes[1][1].set_yticklabels([r"\boldmath{$2\mathrm{e}{0}$}",r"\boldmath{$4\mathrm{e}{0}$}",r"\boldmath{$6\mathrm{e}{0}$}"])
plt.show()
plt.clf()
顺便说一句,我使用了类似的axe.plot和axe.hist代码,它们都运行良好。