Secondary Axis with twinx(): Adding to Legend
Consider a plot with two y-axes, created using twinx(), with lines labeled for each axis. However, upon using legend(), it only displays labels for one axis, excluding the label for the second axis. This article aims to resolve this issue and guide you on adding the missing label to the legend.
Twinx() and Legends
In the example provided, twinx() is used to create a second y-axis (ax2) that shares the same x-axis (time) as the primary axis (ax). When attempting to display all labels in the legend, only those associated with ax (Swdown and Rn) are visible, while the label for ax2 (temp) is absent.
Adding the Missing Label
To include the missing label in the legend, there are two approaches:
Approach 1: Multiple Legends
Add the following line to create a separate legend for ax2:
<code class="python">ax2.legend(loc=0)</code>
This will give you two legends, one for each axis.
Approach 2: Consolidated Legend
To combine all labels into a single legend, follow these steps:
Create a list of all line objects (lines from both axes):
<code class="python">lns = lns1 + lns2 + lns3</code>
Extract labels for each line:
<code class="python">labs = [l.get_label() for l in lns]</code>
Use the legend function to add all labels to a single legend on ax:
<code class="python">ax.legend(lns, labs, loc=0)</code>
Example
The following modified code demonstrates how to add the temp label to the legend with Approach 2:
<code class="python"># ... (code as before) # Combine lines and labels lns = lns1 + lns2 + lns3 labs = [l.get_label() for l in lns] ax.legend(lns, labs, loc=0) # ... (remaining code)</code>
This will result in a single legend that contains all line labels: Swdown, Rn, and temp.
The above is the detailed content of How to Display Labels for Both Axes in a Twinx() Plot Legend?. For more information, please follow other related articles on the PHP Chinese website!