Я использую библиотеку Matplotlib.pyplot, чтобы нарисовать диаграмму данных. Я использую приведенный ниже код и использую слой сценариев, а не слой художника (объектно-ориентированный метод). Я решил свою проблему со слоем Artist, однако я хочу решить ее и методом plt.
ПРОБЛЕМА: Сначала я форматирую график, а затем хочу поместить проценты в верхнюю часть каждой столбчатой диаграммы, однако, когда я делаю метод аннотации, чтобы поставить проценты, предыдущее форматирование перезаписывается, полностью исчезает, и проценты применяются к Старый сюжет. Почему это произошло в PLT?
Я знаю, как решить эту проблему, используя слой Artist, который предпочитают все разработчики. Однако я действительно хочу выяснить, почему plt помещает проценты в старую диаграмму, а не в ту, в которую я внес изменения.
Ниже мой код для вашего рассмотрения. Я также включил фрейм данных, чтобы вы могли запустить его самостоятельно.
import numpy as np
import pandas as pd
df_ds= pd.read_csv('https://cocl.us/datascience_survey_data',header=0,index_col=0)
#Do some changes in my dataframe
df_ds.sort_values(by='Very interested',ascending=False,inplace=True)
df_ds_per=round(df_ds/2233,5)
%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
colors_list = ['#5cb85c','#5bc0de','#d9534f']
df_ds_per.plot(kind="bar",figsize=(20, 8),width=0.8,color=colors_list,edgecolor=None)
#Formatting
plt.xticks(fontsize=14)
plt.yticks([])
#Removing the axes
for spine in plt.gca().spines.values():
spine.set_visible(False)
plt.legend(labels=df_ds_per.columns,fontsize= 14)
plt.title("Percentage of Respondents' Interest in Data Science Areas",fontsize= 16)
#Annotation
for p in df_ds_per.plot(kind="bar",figsize=(20, 8),width=0.8,color =
colors_list,edgecolor=None).patches:
width, height = p.get_width(), p.get_height()
x, y = p.get_xy()
plt.annotate('{:.0%}'.format(height), (x, y + height + 0.01))
plt.show()
Результатом являются два графика, первый из которых имеет все форматы, но не проценты, а второй - только проценты без форматов.
Я знаю, как решить это в слое Artist, установив объект равным сюжету, поэтому, пожалуйста, помогите мне использовать только plt.
Большое спасибо команде. Счастливо быть здесь