python-matplotlib - как объединить несколько графов в один - правильное использование функции выживания - PullRequest
0 голосов
/ 09 ноября 2011
pos=10000
c=0.1
trap1=trapping(pos,c) # instance of a class
mylabel=('c=0.1','c=0.01','c=0.001') 
colors=('bo','ro','mo')   

for i in range(3):
    plot1d=trap1.steps1d(pos,c)
    cn=stats.norm.sf(plot1d)  #create the survival function
    for label,color in zip(mylabel,colors):
        plt.loglog(plot1d,cn,color,label=label)
        plt.hold('on')
    c*=0.1
plt.show()

Здравствуйте, в приведенном выше коде я пытаюсь перебрать 3 различных значения c и создать один график, который покажет все 3 графика в нем. Я не могу заставить его работать правильно! Он показывает только один график,Кроме того, я использую stats.norm.sf, который дает функцию выживания, и график, который я получаю, правильный, но по оси Y я хочу значения от 0 до 1, и это дает мне значения от 10e-300 до 10e-10.!

1 Ответ

1 голос
/ 09 ноября 2011
In [44]: import scipy.stats as stats
In [45]: sf=stats.norm.sf
In [48]: np.log(sf(24))
Out[48]: -292.09872100320786

Следовательно, если plot1d содержит значение около 24, то график loglog функции выживания будет иметь отметку по оси y около 10e-292.

Если вы хотите, чтобы диапазон y варьировался от 0 до 1, значит, вам не нужен график loglog. Возможно, вы ищете график с логарифмической осью X. В этом случае используйте plt.semilogx:

import scipy.stats as stats
import matplotlib.pyplot as plt
import numpy as np

pos=1000
c=0.1
# trap1=trapping(pos,c)  #instance of class trapping
# plot1d=trap1.steps1d(pos,c) #use the method steps1d from class
plot1d=np.linspace(0,25,100)

mylabel=('c=0.1','c=0.01','c=0.001') 
colors=('bo','ro','mo')
cn=stats.norm.sf(plot1d)  #create the survival function
for label,color in zip(mylabel,colors):
    # plt.loglog(plot1d,cn,color,label=label)
    plt.semilogx(plot1d,cn,color,label=label)

plt.show()

PS: 3 раза одинаковые значения отображаются разными цветами. Я предполагаю, что в вашем реальном коде вы измените cn, поэтому этого не произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...