Я пытаюсь использовать Altair в Python, чтобы создать гистограмму, где столбцы имеют различную ширину в зависимости от данных в столбце исходного кадра данных. Конечная цель - получить такой график:
Высота столбцов соответствует предельной стоимости каждой энергетической технологии ( в виде столбца в исходном фрейме данных). Ширина полосы соответствует мощности каждой энерготехнологии (также приведена в виде столбцов в исходном кадре данных). Цвета являются порядковыми данными также из исходного кадра данных. Бары сортируются в порядке возрастания предельных затрат. (Подобный сюжет в энергетической отрасли называется «стеком генерации»). Это легко сделать в matplotlib, как показано в коде ниже:
import matplotlib.pyplot as plt
# Make fake dataset
height = [3, 12, 5, 18, 45]
bars = ('A', 'B', 'C', 'D', 'E')
# Choose the width of each bar and their positions
width = [0.1,0.2,3,1.5,0.3]
y_pos = [0,0.3,2,4.5,5.5]
# Make the plot
plt.bar(y_pos, height, width=width)
plt.xticks(y_pos, bars)
plt.show()
(код из https://python-graph-gallery.com/5-control-width-and-space-in-barplots/)
Но есть ли способ сделать это с Альтаиром? Я хотел бы сделать это с Altair, чтобы я мог по-прежнему получать другие замечательные функции Altair, такие как всплывающая подсказка, селекторы / привязки, поскольку у меня есть много других данных, которые я хочу показать рядом с гистограммой.
Первые 20 строк моих исходных данных выглядят так:
(не в точности соответствует диаграмме, показанной выше).