Равенство с дважды. NaN

Загрузите что-то быстро , чтобы нарисовать несколько осей y, разделяющих ось x, используя ответ @ joe-kington's : enter image description here [/g2]

# d = Pandas Dataframe, 
# ys = [ [cols in the same y], [cols in the same y], [cols in the same y], .. ] 
def chart(d,ys):

    from itertools import cycle
    fig, ax = plt.subplots()

    axes = [ax]
    for y in ys[1:]:
        # Twin the x-axis twice to make independent y-axes.
        axes.append(ax.twinx())

    extra_ys =  len(axes[2:])

    # Make some space on the right side for the extra y-axes.
    if extra_ys>0:
        temp = 0.85
        if extra_ys<=2:
            temp = 0.75
        elif extra_ys<=4:
            temp = 0.6
        if extra_ys>5:
            print 'you are being ridiculous'
        fig.subplots_adjust(right=temp)
        right_additive = (0.98-temp)/float(extra_ys)
    # Move the last y-axis spine over to the right by x% of the width of the axes
    i = 1.
    for ax in axes[2:]:
        ax.spines['right'].set_position(('axes', 1.+right_additive*i))
        ax.set_frame_on(True)
        ax.patch.set_visible(False)
        ax.yaxis.set_major_formatter(matplotlib.ticker.OldScalarFormatter())
        i +=1.
    # To make the border of the right-most axis visible, we need to turn the frame
    # on. This hides the other plots, however, so we need to turn its fill off.

    cols = []
    lines = []
    line_styles = cycle(['-','-','-', '--', '-.', ':', '.', ',', 'o', 'v', '^', '<', '>',
               '1', '2', '3', '4', 's', 'p', '*', 'h', 'H', '+', 'x', 'D', 'd', '|', '_'])
    colors = cycle(matplotlib.rcParams['axes.color_cycle'])
    for ax,y in zip(axes,ys):
        ls=line_styles.next()
        if len(y)==1:
            col = y[0]
            cols.append(col)
            color = colors.next()
            lines.append(ax.plot(d[col],linestyle =ls,label = col,color=color))
            ax.set_ylabel(col,color=color)
            #ax.tick_params(axis='y', colors=color)
            ax.spines['right'].set_color(color)
        else:
            for col in y:
                color = colors.next()
                lines.append(ax.plot(d[col],linestyle =ls,label = col,color=color))
                cols.append(col)
            ax.set_ylabel(', '.join(y))
            #ax.tick_params(axis='y')
    axes[0].set_xlabel(d.index.name)
    lns = lines[0]
    for l in lines[1:]:
        lns +=l
    labs = [l.get_label() for l in lns]
    axes[0].legend(lns, labs, loc=0)

    plt.show()

31
задан Chris Cudmore 17 February 2009 в 19:01
поделиться

4 ответа

Возможно, Вы ищете IsNaN статическая функция?

Попытка что-то вроде этого:

if (!Double.IsNaN(Price_Foreign))
{
   output.Append(spacer);
   output.Append(String.Format("{0,-10:C} USD",Price_Foreign));
}
57
ответ дан 27 November 2019 в 21:28
поделиться

стандарт плавающей точки IEEE 754 состояния, что сравнение NaN с NaN будет всегда , возвращают false. Если необходимо сделать это, используйте Double.isNaN ().

, Но, это не лучший способ сделать то, что Вы пытаетесь сделать. Удваивается не точны, и Вы используете их для представления цен здесь. Я держу пари, что в какой-то момент, Вы собираетесь хотеть сравнить цены за равенство, также. Это не собирается работать, потому что Вы не можете полагаться на равенство с плавающей точкой .

необходимо действительно изучить использование некоторого целого типа для этих значений (который поддерживает сравнение равенства) вместо того, чтобы пытаться использовать, удваивается. Удваивается для научных проблем; не для финансов.

31
ответ дан 27 November 2019 в 21:28
поделиться

Double.NaN ничему не равно, даже самому.

Посмотрите эти Дважды. Поле NaN в документации Библиотеки классов Платформы.NET:

Использование IsNaN, чтобы определить, не является ли значение числом. Не возможно определить, не является ли значение числом путем сравнения его с другим значением, равным NaN.

8
ответ дан 27 November 2019 в 21:28
поделиться

В качестве справочной информации: метод IsNaN () делает return v! = V;

9
ответ дан 27 November 2019 в 21:28
поделиться
Другие вопросы по тегам:

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