Как сделать диаграмму с несколькими данными, используя matplotlib - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь сделать диаграмму на 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) и так далее.

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Я полагаю, что лучший способ - это преобразовать ваш список данных в панды 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()

enter image description here

0 голосов
/ 23 декабря 2018

Это один из способов сделать это.Сначала объедините все четыре списка вместе, чтобы использовать индексирование 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)

enter image description here

...