Среднее значение и среднеквадратичное отклонение в виде заштрихованной области вокруг среднего [дубликата]

Sieve_of_Eratosthenes - простой и быстрый алгоритм для нахождения простых чисел.

function getPrimes($finish)
    {
        $number = 2;
        $range = range($number,$finish);
        $primes = array_combine($range,$range);
        while($number*$number < $finish){
            for($i=$number; $i<=$finish; $i+=$number){
                if($i==$number){
                    continue;
                }
                unset($primes[$i]);
            }
            $number = next($primes);
        }
        return $primes;
    }

69
задан Georgy 2 May 2018 в 20:43
поделиться

2 ответа

Игнорируя гладкую интерполяцию между точками графа примера (для чего требуется выполнить некоторую ручную интерполяцию или просто иметь более высокое разрешение ваших данных), вы можете использовать pyplot.fill_between():

from matplotlib import pyplot as pl
import numpy as np

x = np.linspace(0, 30, 30)
y = np.sin(x/6*np.pi)
error = np.random.normal(0.1, 0.02, size=y.shape)
y += np.random.normal(0, 0.1, size=y.shape)

pl.plot(x, y, 'k-')
pl.fill_between(x, y-error, y+error)
pl.show()

enter image description here [/g1]

См. также примеры matplotlib .

78
ответ дан Georgy 15 August 2018 в 20:34
поделиться
  • 1
    Отлично. Да, я не хотел включать пример с сглаженными строками. – Austin Richardson 18 October 2012 в 16:49
  • 2
    Любая идея, как сделать это шоу заштрихованными ящиками вместо заштрихованной группы? Мой первый инстинкт заключался в злоупотреблении lw, но, похоже, он не использовал те же единицы, что и оси. – Benjamin Bannier 27 August 2013 в 21:30
  • 3
    @BenjaminBannier Я не совсем уверен, что вы имеете в виду. Это звучит так, как будто вы хотите, чтобы в каждой точке рисовался прямоугольник, его высота такая же, как у панели ошибок, а ширина должна быть такой, чтобы они соединяли (касались) соседние поля. Это верно? – user 28 August 2013 в 10:13
  • 4
    @EL_DON Вы имеете в виду, что вам нужна легенда с черной линией + синяя полоса, и текст будет примерно как «данные + 1 область ошибки сигмы»? – user 26 August 2016 в 06:27
  • 5
    @Allan, если единственные строки ошибок, которые у вас есть, горизонтальны, вы, вероятно, должны перевернуть оси вашей реальной проблемы (и, соответственно, цифру). Как правило, независимая переменная представляет собой единицу без (или с очень маленькими) барами ошибок. Вы можете обманывать, заменяя свои переменные данных, и в matplotlib также меняйте топоры. – user 27 April 2017 в 07:40

Это в основном тот же самый ответ, предоставленный Evert , но расширенный, чтобы показать некоторые интересные варианты fill_between

enter image description here [/g1]

from matplotlib import pyplot as pl
import numpy as np

pl.clf()
pl.hold(1)

x = np.linspace(0, 30, 100)
y = np.sin(x) * 0.5
pl.plot(x, y, '-k')


x = np.linspace(0, 30, 30)
y = np.sin(x/6*np.pi)
error = np.random.normal(0.1, 0.02, size=y.shape) +.1
y += np.random.normal(0, 0.1, size=y.shape)

pl.plot(x, y, 'k', color='#CC4F1B')
pl.fill_between(x, y-error, y+error,
    alpha=0.5, edgecolor='#CC4F1B', facecolor='#FF9848')

y = np.cos(x/6*np.pi)    
error = np.random.rand(len(y)) * 0.5
y += np.random.normal(0, 0.1, size=y.shape)
pl.plot(x, y, 'k', color='#1B2ACC')
pl.fill_between(x, y-error, y+error,
    alpha=0.2, edgecolor='#1B2ACC', facecolor='#089FFF',
    linewidth=4, linestyle='dashdot', antialiased=True)



y = np.cos(x/6*np.pi)  + np.sin(x/3*np.pi)  
error = np.random.rand(len(y)) * 0.5
y += np.random.normal(0, 0.1, size=y.shape)
pl.plot(x, y, 'k', color='#3F7F4C')
pl.fill_between(x, y-error, y+error,
    alpha=1, edgecolor='#3F7F4C', facecolor='#7EFF99',
    linewidth=0)



pl.show()
81
ответ дан Community 15 August 2018 в 20:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: