Dans Lors de la représentation graphique de l'ordre de publication des magazines, je voulais ajouter des marqueurs (points sur le graphique) uniquement à des éléments spécifiques avec matplotlib (centre Je voulais mettre une marque pour qu'elle ne soit facile à comprendre que lorsqu'elle était en couleur), mais je ne l'ai pas trouvée du tout lorsque je l'ai recherchée, j'ai donc pris une note. ↑ Je voulais appliquer le marqueur uniquement à une valeur spécifique pour le souligner ainsi.
$ 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
Par exemple, supposons que les données suivantes soient disponibles.
month | janvier | février | Mars | avril | Peut | juin | juillet | août | septembre | octobre | 1janvier | 1février |
---|---|---|---|---|---|---|---|---|---|---|---|---|
data | 13 | 15 | 21 | 5 | 10 | 18 | 21 | 17 | 15 | 16 | 21 | 13 |
Ceci est un graphique de ceux-ci.
Que faire si vous souhaitez marquer uniquement les données de janvier, avril, juillet et octobre dans ce graphique avec des diamants (et pas d'autres)?
Lorsque vous tracez uniquement la partie à marquer comme un tableau, passez-la avec
marquez tous les après ''.
Si vous souhaitez ajouter le Xème marqueur, ajoutez le numéro X-1st au tableau.
Comme ça.
#!/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()
Résultats
Si vous souhaitez utiliser les données de l'axe y comme référence, vous pouvez d'abord comparer les données et les stocker dans le tableau. Exemple) Appliquer des marqueurs uniquement lorsque les données sont impaires
#!/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()
Résultats
affaire en cours de règlement.
Markevery Demo — Matplotlib 3.1.2 documentation
Recommended Posts