Я просматриваю некоторые данные об экологическом следе в мире и хочу составить гистограмму с накоплением для каждого типа следа, где значения, сложенные друг на друге, одинаковы, но для разных стран. Поэтому я начал использовать 2 из этих отпечатков, чтобы что-то заработало.
Это то, что я получил на работу (вроде):
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Create DataFrame from CSV file
df = pd.read_csv('countries.csv')
# Slice Series out of DF
cropFoot = df['Cropland Footprint']
grazeFoot = df['Grazing Footprint']
# Convert Series to list
cropFoot = list(cropFoot)
grazeFoot = list(grazeFoot)
X = range(163) # the lists have 163 entries
plt.bar(X, height=cropFoot)
plt.bar(X, height=grazeFoot, bottom = cropFoot)
plt.show()
, который генерирует следующий график:
У меня есть 5 отдельных элементов footprint, которые я хочу отобразить на оси x, чтобы данные по элементам footprint для каждой страны располагались друг над другом. По сути, сейчас на оси абсцисс показаны все 163 страны с двумя стопками. Я хочу обратного. Итак, я хочу, чтобы на каждом баре было по 5 баров по 163 странам.
Примерно так (но с 163 кусками, а не с 7):
Неудивительно, что просто поменять местами X и высоту ... не работает. И результат не имеет никакого смысла вообще:
plt.bar(cropFoot, height=X)
plt.bar(grazeFoot, height=X, bottom = cropFoot)
plt.show()
Как это выглядит так:
Какой-нибудь совет, как правильно изменить это? Это набор данных, который я использую , полученный из Kaggle.