2

Note that I am making a plot with nested axis labels. No matter what I try, the font size stays the same. Ideally, I would like to be able to give each set of axis labels their own color and font sizes.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
from mpl_toolkits.axisartist.parasite_axes import SubplotHost

fig1 = plt.figure()
ax1 = SubplotHost(fig1, 111)
fig1.add_subplot(ax1)

# Some data
x = np.arange(1,6)
y = np.random.random(len(x))

# First X-axis
ax1.plot(x, y)
ax1.set_xticks(x)
ax1.set_xticklabels(['7up', 'cream', 'coke', 'rootb', 'cherryc'])
#ax1.xaxis.set_label_text('First X-axis') # Uncomment to label axis
ax1.yaxis.set_label_text("Sample data")

# Second X-axis
ax2 = ax1.twiny()
offset = 0, -25 # Position of the second axis
new_axisline = ax2.get_grid_helper().new_fixed_axis
ax2.axis["bottom"] = new_axisline(loc="bottom", axes=ax2, offset=offset)
ax2.axis["top"].set_visible(False)

ax2.set_xticks([0.0, 0.6, 1.0])
ax2.xaxis.set_major_formatter(ticker.NullFormatter())
ax2.xaxis.set_minor_locator(ticker.FixedLocator([0.3, 0.8]))
ax2.xaxis.set_minor_formatter(ticker.FixedFormatter(['weekly', 'daily']))

# Third X-axis
ax3 = ax1.twiny()
offset = 0, -50
new_axisline = ax3.get_grid_helper().new_fixed_axis
ax3.axis["bottom"] = new_axisline(loc="bottom", axes=ax3, offset=offset)
ax3.axis["top"].set_visible(False)

ax3.set_xticks([0.0, 1.0])
ax3.xaxis.set_major_formatter(ticker.NullFormatter())
ax3.xaxis.set_minor_locator(ticker.FixedLocator([0.5]))
ax3.xaxis.set_minor_formatter(ticker.FixedFormatter(['customer favs']))

plt.show()

figure output

TimeWizud
  • 61
  • 2
  • Try to change your axis color in this way: set different value of `matplotlib.rcParams['text.color']` before assignment of each axis. If you do it, you'll see that your `ax1` is a little bit complex unlike another two: it contains both `xaxis` and `yaxis`. Hope this is useful. – mathfux Aug 16 '20 at 23:11

1 Answers1

0

It's not an individual setting, but it's all configurable in 'xticks.labelsize'. They are: 'xx-small, x-small, small, medium, medium, large, x-large and xx-large,'

plt.rcParams['xtick.labelsize'] = 'XX-large'

enter image description here

r-beginners
  • 31,170
  • 3
  • 14
  • 32