


Python-matplotlib | Draw dual y-axis graphics (legend settings)
df = pd.read_csv('jobdata.csv')

colors = ["#51C1C8", "#536D84","#E96279"] plt.figure(figsize=(16, 8)) ax1 = plt.subplot(111) ax1.set_ylim(0,1200) lin0 = ax1.plot(x_data, y_data1, marker='o', color=colors[0], label='岗位数量') for x, y in enumerate(y_data1): plt.text(x - 0.2, y+5, y) ax1.set_ylabel('岗位数量',fontsize=12) plt.legend() plt.title("各城市Java岗位数量") plt.show()
# 增加y轴 ax2 = ax1.twinx() ax2.set_ylim(0,60) lin1 = ax2.plot(x_data, y_data2, linestyle='--', marker='o', c=colors[1], label='平均最低薪资') for x, y in enumerate(y_data2): plt.text(x - 0.1, y+1, y) lin2 = ax2.plot(x_data, y_data3, linestyle='--', marker='o', c=colors[2], label='平均最高薪资') for x, y in enumerate(y_data3): plt.text(x - 0.1, y+1, y) ax2.set_ylabel('平均薪资(万/年)',fontsize=12) plt.legend() plt.title("各城市Java岗位数量和薪资水平状况") plt.show()
3. 单独设置图例
ax1.legend(loc='best') ax2.legend(loc='best')
ax1.legend(loc=2) ax2.legend(loc=1)
这样看就比较直观了,但是我就想把三个图例放一起不可以吗?
当然可以!
3. 设置组合图例
lines = lin0+lin1+lin2 labs = [label.get_label() for label in lines] plt.legend(lines,labs)
大功告成!
但是!如果是柱状图+折线图的情况,效果还一样吗?
但是!如果是柱状图+折线图的情况,效果还一样吗?
但是!如果是柱状图+折线图的情况,效果还一样吗?
1. 修改岗位数量为柱状图
plt.figure(figsize=(16, 8)) a1 = plt.subplot(111) a1.set_ylim(0,1200) bar = a1.bar(x_data, y_data1, color=colors[0], label='岗位数量') for x, y in enumerate(y_data1): plt.text(x - 0.2, y+5, y) a1.set_ylabel('岗位数量',fontsize=12) ... lines = bar+lin1+lin2 labs = [label.get_label() for label in lines] plt.legend(lines,labs)
直接报错了!
The prompt type is inconsistent. It is obviously a problem with the type of bar and line. Let’s check the source code:
matplotlib.axes.Axes.plot:
matplotlib.axes.Axes.bar:
2. 设置Line2D和patches的组合图例
legend_handles = [ Line2D([], [], linewidth=1, ls='--', lw=2, c=colors[2], label='平均最高薪资'), Line2D([], [], linewidth=1, lw=2, c=colors[1], label='平均最低薪资'), patches.Rectangle((0, 0), 1, 1, facecolor=colors[0],label='岗位数量') ] plt.legend(handles=legend_handles, loc='best', fontsize=14)

The above is the detailed content of Python-matplotlib | Draw dual y-axis graphics (legend settings). For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Many website developers face the problem of integrating Node.js or Python services under the LAMP architecture: the existing LAMP (Linux Apache MySQL PHP) architecture website needs...

Solution to permission issues when viewing Python version in Linux terminal When you try to view Python version in Linux terminal, enter python...

When using Scapy crawler, the reason why pipeline persistent storage files cannot be written? Discussion When learning to use Scapy crawler for data crawler, you often encounter a...

Getting started with Python: Hourglass Graphic Drawing and Input Verification This article will solve the variable definition problem encountered by a Python novice in the hourglass Graphic Drawing Program. Code...

Python process pool handles concurrent TCP requests that cause client to get stuck. When using Python for network programming, it is crucial to efficiently handle concurrent TCP requests. ...

Deeply explore the viewing method of Python functools.partial object in functools.partial using Python...

Choice of Python Cross-platform desktop application development library Many Python developers want to develop desktop applications that can run on both Windows and Linux systems...

Many developers rely on PyPI (PythonPackageIndex)...
