In Bei der grafischen Darstellung der Veröffentlichungsreihenfolge von Zeitschriften wollte ich Markierungen (Punkte in der Grafik) nur bestimmten Elementen mit matplotlib (Mitte) hinzufügen. Ich wollte ein Zeichen setzen, damit es nur in Farbe leicht zu verstehen ist, aber ich habe es bei der Suche überhaupt nicht gefunden, also habe ich mir eine Notiz gemacht. ↑ Ich wollte den Marker nur bei einem bestimmten Wert anwenden, um ihn so hervorzuheben.
$ uname -a
Linux kali 4.18.0-kali2-amd64 #1 SMP Debian 4.18.10-2kali1 (2018-10-09) x86_64 GNU/Linux
$ python3 --version
Python 3.7.6
$ pip3 show matplotlib
Name: matplotlib
Version: 3.1.2
Angenommen, die folgenden Daten sind verfügbar.
month | Januar | Februar | März | April | Kann | Juni | Juli | August | September | Oktober | 1Januar | 1Februar |
---|---|---|---|---|---|---|---|---|---|---|---|---|
data | 13 | 15 | 21 | 5 | 10 | 18 | 21 | 17 | 15 | 16 | 21 | 13 |
Dies ist eine Grafik davon.
Was ist, wenn Sie nur die Daten für Januar, April, Juli und Oktober in dieser Grafik mit Diamanten (und nicht mit anderen) markieren möchten?
Wenn Sie nur den Teil zeichnen, der als Array markiert werden soll, übergeben Sie ihn danach mit "Markieren". Wenn Sie die X. Markierung hinzufügen möchten, fügen Sie die X-1-Nummer zum Array hinzu.
So was.
#!/usr/bin/env python
import matplotlib.pyplot as plt
X_data=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Y_data=[13,15,21,5,10,18,21,17,15,16,21,13]
month_name=['Jan.','Feb.','Mar.','Apr.','May','Jun.','Jul.','Aug.','Sep.','Oct.','Nov.','Dec.']
mark_point=[0,3,6,9]
plt.xlabel('month')
plt.ylabel('data')
plt.grid(color='gray')
plt.xticks(X_data,month_name)
plt.yticks(range(1,max(Y_data)+1))
plt.plot(X_data,Y_data, '.', linestyle='solid', marker="D", markevery=mark_point)
plt.show()
Ergebnisse
Wenn Sie die Daten der y-Achse als Referenz verwenden möchten, können Sie die Daten zuerst vergleichen und im Array speichern. Beispiel) Wenden Sie Markierungen nur an, wenn die Daten ungerade sind
#!/usr/bin/env python
import matplotlib.pyplot as plt
X_data=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
Y_data=[13,15,21,5,10,18,21,17,15,16,21,13]
month_name=['Jan.','Feb.','Mar.','Apr.','May','Jun.','Jul.','Aug.','Sep.','Oct.','Nov.','Dec.']
mark_point=[]
for i,data in enumerate(Y_data):
if data%2:
mark_point.append(i)
plt.xlabel('month')
plt.ylabel('data')
plt.grid(color='gray')
plt.xticks(X_data,month_name)
plt.yticks(range(1,max(Y_data)+1))
plt.plot(X_data,Y_data, '.', linestyle='solid', marker="D", markevery=mark_point)
plt.show()
Ergebnisse
Fall wird beigelegt.
Markevery Demo — Matplotlib 3.1.2 documentation
Recommended Posts