Есть ли способ получить составную гистограмму (она же столбчатая гистограмма)?

#python

Вопрос:

У меня есть следующий код, и я хотел бы получить график, подобный тому, который помечен как «хочу», но вместо этого я получаю тот, где есть перекрытие по цвету. Я полагаю, что у панд может быть встроенный график, подобный тому, который я ищу, но, возможно, этот график, который я создаю, мог бы сделать то же самое.

Обновить:

Мне удалось заставить график работать, теперь мне нужно, чтобы цвета не повторялись. Существует повторение цвета для каждого «состояния» (т. Е. Dehli и т. Д.), Код был обновлен, чтобы отразить изменения.

код:

 data = Table.read_table('IndiaStatus.csv')#.drop('Discharged', 'Discharge Ratio (%)','Total Cases','Active','Deaths')


data2 = data.to_df()

cols = list(data2.columns)
cols.remove('State/UTs')


# now iterate over the remaining columns and create a new zscore column
for col in cols:
    col_zscore = col   '_zscore'
    data2[col_zscore] = (data2[col] - data2[col].mean())/data2[col].std(ddof=0)
print(data2)



data2.info()






data2["outlier"] = (abs(data2["Total Cases_zscore"])>1).astype(int)

print(data2)

delete_row = data2[data2["outlier"]== 1].index
data2 = data2.drop(delete_row)
print(data2)




data2["outlier2"] = ((data2["Active_zscore"])> 0.00).astype(int)

delete_row = data2[data2["outlier2"]== 1].index
data2 = data2.drop(delete_row)

'''
#Analyzing and removing outliers for Total Cases_zscore
sns.distplot(data2["Active_zscore"], kde = False, bins = 30)


g = sns.jointplot(x='Active_zscore', y='Active_zscore',
                  data=data2, hue='State/UTs')

plt.subplots_adjust(right=0.75)
g.ax_joint.legend(bbox_to_anchor=(1.25,1), loc='upper left', borderaxespad=0)
'''

print(data2)


print(data2.mean())

print(data2.std())




#data2.insert(1, column = "Level", value = np.where(data2["Active"] > 9700, "Severe", data["Active"] < 9700 amp; data["Active"] > 4850, 'Less_Severe','Not_Severe'))


col         = 'Active'
conditions  = [ data2['Active']<=600, data2['Active']<= 1200, data2['Active'] >1200  ]
choices     = [ 'Not_Severe','Less_Severe',"Severe"   ]
    
data2["Level"] = np.select(conditions, choices, default=np.nan)
print(data2)



ax=data2.pivot_table(index='Level', columns = 'State/UTs', values = 'Total Cases').plot(kind='bar',stacked=True,figsize=(15,15),fontsize=25)
ax.legend(fontsize=25)


#set ylim
#plt.ylim(-1, 20,5)
#plt.xlim(-1,4,8)
#grid on
plt.grid()
# set y=0
ax.axhline(0, color='black', lw=1)
#change size of legend
ax.legend(fontsize=8,loc=(1.0,0.2))
#hiding upper and right axis layout
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
#changing the thickness
ax.spines['bottom'].set_linewidth(3)
ax.spines['left'].set_linewidth(3)
#setlabels
ax.set_xlabel('Level',fontsize=20,color='r')
ax.set_ylabel('Total Cases',fontsize=20,color='r')
#rotation
plt.xticks(rotation=0)
 

Хотеть:

введите описание изображения здесь

Фактический Объем Производства:

введите описание изображения здесь

Обновить:

введите описание изображения здесь

Ответ №1:

Сделайте фон графика белым, используя

 sns.set_style("whitegrid")
 

Комментарии:

1. Дело не в этом. Цвета накладываются друг на друга, создавая разные цветовые оттенки.