Визуализировать симуляции / итерации как доверительный интервал в поле Python? - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть данные со значениями, сгенерированными на основе смоделированных итераций (например, для 100), и я пытаюсь визуализировать изменение среднего / медианы, первого и третьего квартиля за 100 итераций в виде заштрихованного доверительного интервала вокруг на диаграмме блока. Я с трудом пытаюсь найти пример рабочего представления симуляций / итераций в блокпосте, и мне было интересно, есть ли у кого-то какое-то направление. Ценю ваши предложения. На рисунке ниже приведен пример выходных данных, которые я пытаюсь достичь.

import random
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import itertools




def generate_dataframe():
    # Create a pandas dataframe...

    _type = ['A', 'B', 'C', 'D'] *2500
    _shares = [random.randint(0,100) for _ in range(10000)]
    lst = range(1,101)    
    _iterations = list(itertools.chain.from_iterable(itertools.repeat(x, 100) for x in lst))
    return pd.DataFrame(
        {
         'Type': _type,
         'shares': _shares,
         'iteration': _iterations
        })



df = generate_dataframe()
#df.boxplot(column = 'shares', by=['Type', 'iteration'])
df.boxplot(column = 'shares', by='Type')

enter image description here

1 Ответ

0 голосов
/ 02 апреля 2019

Кажется, вы очень близки.Вам просто нужно добавить plt.show() в конце кода, чтобы сделать это

import random
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import itertools

def generate_dataframe():
    # Create a pandas dataframe...

    _type = ['A', 'B', 'C', 'D'] *2500
    _shares = [random.randint(0,100) for _ in range(10000)]
    lst = range(1,101)    
    _iterations = list(itertools.chain.from_iterable(itertools.repeat(x, 100) 
for x in lst))
    return pd.DataFrame(
        {
         'Type': _type,
         'shares': _shares,
         'iteration': _iterations
        })

df = generate_dataframe()
df.boxplot(column = 'shares', by='Type')
plt.show()
...