Как сделать диаграмму с несколькими данными, используя matplotlib

1

Я пытаюсь сделать диаграмму на python, используя matplotlib, но я борюсь, даже если знаю, что то, что я пытаюсь сделать, очень просто.

У меня есть разные переменные одинаковой длины, представьте 4 списка:

run1 = [250,250,250,250]
run2 = [100,100,400,400]
run3 = [50,250,550,150]
run4 = [300,200,100,400]

И то, что я хочу, это просто график с 4 * 4 барами. Я хочу сгруппировать первый элемент каждого списка (здесь 250,100,50,300) и иметь четыре бара с разными цветами, высота которых соответствует значениям на оси Y. А затем поставить пробел, снова иметь 4 бара со следующими значениями (250 100 250 250) и так одно.

Как я могу это сделать?

Спасибо.

Теги:
matplotlib
bar-chart

2 ответа

0

Я думаю, что лучший способ - это преобразовать ваш список данных в pandas DataFrame и построить график:

import matplotlib.pyplot as plt
import pandas as pd

run1 = [250,250,250,250]
run2 = [100,100,400,400]
run3 = [50,250,550,150]
run4 = [300,200,100,400]

runs = pd.DataFrame({'Run 1': run1, 'Run 2': run2,
 'Run 3': run3, 'Run 4': run4})
runs.plot.bar()
plt.show()

Изображение 174551

0

Это один из способов сделать это. Сначала объедините все четыре списка, чтобы использовать индексирование NumPy для получения одного элемента из каждого списка.

Здесь важен alpha параметр, который контролирует прозрачность баров, потому что если вы используете непрозрачные бары alpha=1 то вы увидите только самый высокий брус, потому что за ним будут скрыты другие бары. Я использовал alpha=0.2. Вы можете использовать любое значение, которое вы предпочитаете.

import numpy as np
import matplotlib.pyplot as plt

run1 = [250,250,250,250]
run2 = [100,100,400,400]
run3 = [50,250,550,150]
run4 = [300,200,100,400]

run_all = np.stack((run1, run2, run3, run4))

for i in range(len(run_all)):
    plt.bar(range(4), run_all[i, :], alpha=0.2)

Изображение 174551

  • 0
    Спасибо за ваш ответ, дело в том, что когда вы делаете это, у вас много разных цветов благодаря прозрачности. Я предпочел бы иметь бары рядом друг с другом. Так что я могу указать цвет. Кроме того, как указать метку для каждого бара? Например, run1, run2, run3 и четыре на оси x?
  • 0
    Посмотрите здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню