以下内容可以独立设置左右y轴的颜色、字体和字号,但无法为x轴设置字体或字号。可以设置x轴的颜色。我正在使用ParasiteAxes,因为它们允许我在使用matplotlib.animation时以其他方式修改图表格式。目标是能够为每个轴标签分别设置字体、字号和颜色,并且这些应该与刻度标签(至少大小上)是独立的。
from mpl_toolkits.axisartist.parasite_axes import HostAxes, ParasiteAxes
import matplotlib.pyplot as plt
plt.rcParams.update({'font.size': 16})
plt.rcParams.update({'font.weight': 'normal'})
plt.rcParams.update({'font.family': 'times new roman'})
x = [0, 1, 2]
y1 = [0, 1, 2]
y2 = [1, 2, 3]
fig = plt.figure(figsize=(8, 4.5))
host = fig.add_axes([0.10, 0.1, 0.60, 0.85], axes_class=HostAxes)
host.set_xlim(0, 2)
host.axis["right"].set_visible(False)
host.axis["left"].set_visible(False)
host.set_xlabel('X Axis', fontsize=24, fontfamily='courier new', color='tab:green')
y1_color = 'tab:red'
y1_axis = ParasiteAxes(host, sharex=host)
host.parasites.append(y1_axis)
y1_axis.axis['y1'] = y1_axis.new_fixed_axis(loc='left', offset=(0, 0))
y1_axis.set_ylim(0, 4)
y1_axis.set_ylabel('Y1 Axis')
y1_axis.axis['y1'].label.set(fontsize=12, color=y1_color, fontfamily='courier new')
y1_line, = y1_axis.plot([], [], lw=2, color=y1_color)
y1_line.set_data(x, y1)
y2_color = 'tab:blue'
y2_axis = ParasiteAxes(host, sharex=host)
host.parasites.append(y2_axis)
y2_axis.axis['y2'] = y2_axis.new_fixed_axis(loc='right', offset=(0, 0))
y2_axis.set_ylim(0, 4)
y2_axis.set_ylabel('y2 Axis')
y2_axis.axis['y2'].label.set(fontsize=24, color=y2_color, fontfamily='arial')
y2_line, = y2_axis.plot([], [], lw=2, color=y2_color)
y2_line.set_data(x, y2)
plt.show()
下面是生成的图表:
我在上述代码中期望的x轴标签是绿色24号Courier New字体,但在图表中它出现了绿色16号Times New Roman字体(除颜色外取自rcParams)。如果修改rcParams,则会修改刻度标签,而我希望刻度标签独立于x轴标签。我希望得到解决方案,同时也想知道为什么这两个轴对象行为不同。