Home > Backend Development > Python Tutorial > How to Display Labels for Both Axes in a Twinx() Plot Legend?

How to Display Labels for Both Axes in a Twinx() Plot Legend?

Patricia Arquette
Release: 2024-11-03 07:38:02
Original
868 people have browsed it

How to Display Labels for Both Axes in a Twinx() Plot Legend?

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>
Copy after login

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:

  1. Create a list of all line objects (lines from both axes):

    <code class="python">lns = lns1 + lns2 + lns3</code>
    Copy after login
  2. Extract labels for each line:

    <code class="python">labs = [l.get_label() for l in lns]</code>
    Copy after login
  3. Use the legend function to add all labels to a single legend on ax:

    <code class="python">ax.legend(lns, labs, loc=0)</code>
    Copy after login

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>
Copy after login

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!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template