Heim > Backend-Entwicklung > Python-Tutorial > Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)

Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)

Freigeben: 2023-08-09 16:06:30
nach vorne
2426 Leute haben es durchsucht


Heute werde ich Ihnen vorstellen, wie Sie die Matplotlib-Bibliothek von Python zum Zeichnen von Doppel-Y-Achsen-Diagrammen und ihren Legendeneinstellungen verwenden . Ich hoffe, dass es Ihnen hilfreich sein wird Bei Fragen oder Anregungen können Sie eine private Nachricht an den Herausgeber senden.
Rendering-Vorschau:

Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)

Beispieldaten:
1. Doppeltes Y-Achsen-Liniendiagramm
1. Positionsnummernliniendiagramm
Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)2. Fügen Sie eine y-Achse durch ax1.twinx( ):
df = pd.read_csv('jobdata.csv')
Nach dem Login kopieren

重点:细心的小伙伴可能发现了图没有问题,但是右上角的图例只显示了平均最低薪资和平均最薪资,但是岗位数量的图例并没有显示。

3. 单独设置图例

ax1.legend(loc='best')
ax2.legend(loc='best')
Nach dem Login kopieren

Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)

看着感觉没什么变化,实际上仔细看会发现平均最低薪资、平均最高薪资、岗位数量三个图例都显示出来了,只不过岗位数量图例被盖住了,我们可以移动一下位置看看:
ax1.legend(loc=2)
ax2.legend(loc=1)
Nach dem Login kopieren

Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)

这样看就比较直观了,但是我就想把三个图例放一起不可以吗?

当然可以!

3. 设置组合图例

lines = lin0+lin1+lin2
labs = [label.get_label() for label in lines]
plt.legend(lines,labs)
Nach dem Login kopieren

Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)


大功告成!

但是!如果是柱状图+折线图的情况,效果还一样吗?

但是!如果是柱状图+折线图的情况,效果还一样吗?

但是!如果是柱状图+折线图的情况,效果还一样吗?


2、双y轴柱状图+折线图

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)
Nach dem Login kopieren

直接报错了!Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)

Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)

Der Eingabeaufforderungstyp ist offensichtlich ein Problem mit der Art des Balkens und der Linie. Schauen wir uns den Quellcode an:

matplotlib.axes. Axes.bar: Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)

ax.plot gibt eine Liste vom Typ Line2D zurück, und ax.bar gibt ein Tupel vom Typ patches zurück.
Nachdem wir die Grundursache gefunden haben, erstellen wir einfach eine Kombination aus Line2D und Patches.

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)
Nach dem Login kopieren
效果:
Python-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen)
其他参数大家可以自行尝试修改,对比前后效果,加深理解。

Das obige ist der detaillierte Inhalt vonPython-matplotlib |. Dual-Y-Achsen-Grafiken zeichnen (Legendeneinstellungen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:Python当打之年
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage