title: Matplotlib: y-axis label with multiple colors
body: <p>I was wondering what the best way to make a y-label where each word in the label can be a different color. </p>
  
  <p>The reason I would like this is because I will be making plots that will contain to curves (Electric Fields and Vector Potential Fields). These curves will be different colors and I would like to show this in the labels. The following is a simplified example, using a previous post (<a href="https://stackoverflow.com/questions/11325765/matplotlib-multiple-colours-in-tick-labels">Matplotlib multiple colours in tick labels</a>) to get close. This post does well for the x-axis, however it doesn't space/order the y-axis correctly.</p>
  
  <p>Another post had a similar question (<a href="https://stackoverflow.com/questions/9169052/partial-coloring-of-text-in-matplotlib">Partial coloring of text in matplotlib</a>), but the first answer didn't seem to work at all anymore and the second answer makes you save the file as a .ps file.</p>
  
  <p>My example code is </p>
  
  <pre><code>import numpy as np 
  import matplotlib.pyplot as plt
  from matplotlib.offsetbox import AnchoredOffsetbox, TextArea, HPacker, VPacker
  
  ax = plt.subplot(111)
  
  x = np.linspace(0,10,10)
  y1 = x
  y2 = x**2
  
  ax.plot(x,y1,color='r',label='data1')
  ax.plot(x,y2,color='b',label='data2')
  ax.set_xticks([]) # empty xticklabels
  ax.set_yticks([]) # empty xticklabels
  
  # x-axis label
  xbox1 = TextArea("Data1-x ", textprops=dict(color="r", size=15))
  xbox2 = TextArea("and ", textprops=dict(color="k", size=15))
  xbox3 = TextArea("Data2-x ", textprops=dict(color="b", size=15))
  
  xbox = HPacker(children=[xbox1, xbox2, xbox3],
                    align="center", pad=0, sep=5)
  
  anchored_xbox = AnchoredOffsetbox(loc=3, child=xbox, pad=0., frameon=False,
                                        bbox_to_anchor=(0.3, -0.07),
                                        bbox_transform=ax.transAxes, borderpad=0.)
  
  # y-axis label
  ybox1 = TextArea("Data1-y ", textprops=dict(color="r", size=15,rotation='vertical'))
  ybox2 = TextArea("and ", textprops=dict(color="k", size=15,rotation='vertical'))
  ybox3 = TextArea("Data2-y ", textprops=dict(color="b", size=15,rotation='vertical'))
  
  ybox = VPacker(children=[ybox1, ybox2, ybox3],
                    align="center", pad=0, sep=5)
  
  anchored_ybox = AnchoredOffsetbox(loc=8, child=ybox, pad=0., frameon=False,
                                        bbox_to_anchor=(-0.08, 0.4),
                                        bbox_transform=ax.transAxes, borderpad=0.)
  
  
  ax.add_artist(anchored_xbox)
  ax.add_artist(anchored_ybox)
  plt.legend()
  plt.show()
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/vjRMV.png" rel="noreferrer"><img src="https://i.stack.imgur.com/vjRMV.png" alt="Example image"></a></p>
  
  <p>Thanks for the help!</p>