Seaborn: линейный сюжет: несколько цветов для одной строки - PullRequest
0 голосов
/ 03 апреля 2019

Я мигрирую - по нескольким причинам - с R на python, и в ходе этого переключаю систему построения графиков.

В R я использовал ggplot2 для рисования диаграммы, отображающейлинейный график, где цвет линии зависит от диапазона значений y для построения.

Кроме рисования сегментированной линии, каждая из которых имеет свой собственный цвет, соединяя ее вместе, я не смогнайдите красивое и тонкое решение, сравнимое с кодом R.

Код R выглядит как

ISP <- list(
    provider = list(
        name = "UPC",
        product = "Fiber Power Pack Medium",
        location = "Vienna",
        from = ymd_hms("2015-11-30 12:00:00"),
        to = ymd_hms("2017-06-14 18:00:00")
    ),
    download = list(
        speed = 75,
        min = 0,
        max = 100,
        colour = "seagreen",
        linetype = "dashed",
        fontsize = 3,
        from = ymd_hms("2015-11-30 12:00:00"),
        to = ymd_hms("2017-06-14 18:00:00")
    ),
    upload = list(
        speed = 7.5,
        min = 0,
        max = 10.0,
        colour = "seagreen",
        linetype = "dashed",
        fontsize = 3,
        from = ymd_hms("2015-11-30 12:00:00"),
        to = ymd_hms("2017-06-14 18:00:00")
    ),
    latency = list(
        speed = 1.0,
        min = 0,
        max = 1500.0,
        colour = "seagreen",
        linetype = "dashed",
        fontsize = 3,
        from = ymd_hms("2015-11-30 12:00:00"),
        to = ymd_hms("2017-06-14 18:00:00")
    )
) # ISP

LVL <- list(
    speed = list(
        lbl = c("non-acceptable", "bad", "poor", "mediocre", "good", "excellent"),
        lvl = c(-100, 0.5, 0.65, 0.80, 0.90, 0.99, 100),
        col = c("darkred", "red", "orange", "yellow", "yellowgreen", "green")
    ),
    latency = list(
        lbl = c("excellent", "good", "mediocre", "poor", "bad", "non-acceptable"),
        lvl = c(0.0, 2.0, 5.0, 25.0, 50.0, 200.0, 1000000.0),
        col = c("green", "yellowgreen", "yellow", "orange", "red", "darkred")
    ),
    time = list(
        lbl = c("night", "morning", "mid-morning", "midday", "afternoon", "evening", "night2"),
        lvl = c("00:00:00", "04:30:00", "09:30:00", "11:30:00", "14:00:00", "17:30:00", 
                "21:30:00", "23:59:59"),
        col = c("darkblue", "lightblue2", "skyblue2", "deepskyblue2", "deepskyblue3", 
                "deepskyblue4", "darkblue")
    )
) # LVL
names(LVL$speed$col) <- LVL$speed$lbl
names(LVL$latency$col) <- LVL$latency$lbl
names(LVL$time$col) <- LVL$time$lbl

LOG <- list(
    fnametst = file.path("../data/spdtst.log"),
    fname = file.path("/data/logfile/host/spdtst.log"),
    cnraw = c("Server ID", "Sponsor", "Server Name", "Timestamp", "Distance", 
              "Ping", "Download", "Upload"),
    clraw = c("factor", "factor", "factor", "POSIXct", "double", "double",
              "double", "double"),
    cnfin = c("Date", "Time", "Timestamp", "Week", "DoW", "ToD", 
              "Ping", "PCat", "Download", "DLCat", "Upload", "ULCat",
              "Server ID", "Sponsor", "Server Name", "Distance"),
    cntfin = c("Date", "Time", "Timestamp", "Week", "DoW", "ToD", 
               "ValueType", "Value", "Category",
               "Server ID", "Sponsor", "Server Name", "Distance")
) # LOG

pltTime <- function(dt=NULL, catcols=NULL, catcoll=NULL,
                       isrv=NULL, iloc=NULL, iprod=NULL) {

    gtcmn <- getMeanCol(dt)
    gtcdn <- gtcmn$download
    gtcup <- gtcmn$upload
    gtcpg <- gtcmn$latency

    gtdn <- ggplot(data=dt, aes(Timestamp, Download)) +
            geom_line(aes(colour=DLCat, group=1), show.legend=FALSE) +
            scale_colour_manual(values=catcols) +
            geom_hline(yintercept=ISP$download$speed, 
                       colour=ISP$download$colour, lty=ISP$download$linetype) +
            geom_smooth(method="lm", formula=y~x, aes(colour=NA), colour=gtcdn) +
            ylim(ISP$download$min, ISP$download$max) +
            labs(x="", y="Download Speed\n[mbit/s]") +
            annotate(geom="text", size=ISP$download$fontsize, hjust=0,
                     label=paste(isrv, "/", iprod, ": target download speed", sep=""),
                     x=min(dt$Timestamp), y=(ISP$download$speed + 5), 
                     color=ISP$download$colour)
    gtup <- ggplot(data=dt, aes(Timestamp, Upload)) +
            geom_line(aes(colour=ULCat, group=1), show.legend=FALSE) +
            scale_colour_manual(values=catcols) +
            geom_hline(yintercept=ISP$upload$speed, 
                       colour=ISP$upload$colour, lty=ISP$upload$fontsize) +
            geom_smooth(method="lm", formula=y~x, aes(colour=NA), colour=gtcup) +
            ylim(ISP$upload$min, ISP$upload$max) +
            labs(x="", y="Upload Speed\n[mbit/s]") +
            annotate(geom="text", size=ISP$upload$fontsize, hjust=0,
                     label=paste(isrv, "/", iprod, ": target upload speed", sep=""),
                     x=min(dt$Timestamp), y=(ISP$upload$speed + 0.5), 
                     color=ISP$upload$colour)
    gtpg <- ggplot(data=dt, aes(Timestamp, Ping)) +
            geom_line(aes(colour=PCat, group=1), show.legend=FALSE) +
            scale_colour_manual(values=catcoll) +
            geom_hline(yintercept=ISP$latency$speed, 
                       colour=ISP$latency$colour, lty=ISP$latency$linetype) +
            geom_smooth(method="lm", formula=y~x, aes(colour=NA), colour=gtcpg) +
            ylim(ISP$latency$min - 70, ISP$latency$max) +
            labs(x="", y="Latency\n[ms]") +
            annotate(geom="text", size=ISP$latency$fontsize, hjust=0,
                     label=paste(isrv, "/", iprod, ": target latency", sep=""),
                     x=min(dt$Timestamp), y=(ISP$latency$speed - 60), 
                     color=ISP$latency$colour)

    gmt <- textGrob("Internet Speed Monitoring", gp=gpar(fontsize=20))
    gst <- textGrob(paste("(", isrv, " / ", iloc, " / ", iprod, ")", sep=""), 
                    gp=gpar(fontsize=12))
    margin <- unit(0.5, "line")
    glgd <- legendGrob(LVL$speed$lbl, nrow=1, do.lines=TRUE,
                       gp=gpar(col=LVL$speed$col, fontsize=10))

    # arrange chart elements & display plot
    grid.arrange(gmt, gst, gtdn, gtup, gtpg, glgd, nrow=6, ncol=1,
                 heights=unit.c(grobHeight(gmt) + 1.2 * margin, 
                                grobHeight(gst) + margin, 
                                unit(1, "null"), unit(1, "null"), unit(1, "null"),
                                grobHeight(glgd) + margin))

} # pltTime

, который отображает график типа

enter image description here

Мой соответствующий код Python, облегчающий matplotlib, выглядит как

def pltTimeMatplotlib(df=None, catcols=None, catcoll=None, isrv=None,     iloc=None, iprod=None,
                      showfit=True, figsize='MEDIUM', backend='Agg', showfig=cmn.IsInteractive()):
    gtcmn = lgmnc.getMeanCol(df)
    gtcdn = gtcmn['download']
    gtcup = gtcmn['upload']
    gtcpg = gtcmn['ping']
    gtit = lgd.INFO['Title']
    gstit = lgd.INFO['Subtit'] % (isrv, iloc, iprod)

    # set up plotting environment
    cmn.SetPlotBackendMatplotlib(backend)
    cmn.SetPlotPropertiesMatplotlib()

    # new plot (3 rows, 1 column)
    fig, ax = plt.subplots(nrows=3, ncols=1, sharex=True, figsize=cmn.GetFigSize(figsize)['SIZE'])

    # plot download values
    # ax[0].set_title(gtit + '\n' + '$\\regular_{{' + gstit + '}}$', fontsize=20)
    lpcl.ColLineMatplotlib(ax, row=0, x=df.Timestamp, y=df.Download, w=df.DLCat,
                           name=lgd.INFO['Dnld']['Name'], lbls=lgd.ISP_SPD_LVL['lbl'],
                           style='solid', colors=lgd.ISP_SPD_LVL['col'],
                           alpha=lgd.INFO['FitVal']['AlphaObs'] if showfit else 1,
                               ytitle=lgd.INFO['Dnld']['Yaxis'], ymin=lgd.ISP['DlSpdMin'], ymax=lgd.ISP['DlSpdMax'])
    lphl.HorLineMatplotlib(ax, row=0, x=df.Timestamp, y=lgd.ISP['DlSpd'],
                           name='%s / %s: target download speed' % (isrv, iprod), fs=lgd.ISP['DlSpdFsz'],
                           color=lgd.ISP['DlSpdCol'], style=lgd.ISP['DlSpdLty'])

    if showfit:
        lpfl.pltFitLineMatplotlib(ax, row=0, x=df.Timestamp, y=df.DLFit, se=df.DLFit_se95, color=gtcmn['download'])

    # plot upload values
    lpcl.ColLineMatplotlib(ax, row=1, x=df.Timestamp, y=df.Upload, w=df.ULCat,
                           name=lgd.INFO['Upld']['Name'], lbls=lgd.ISP_SPD_LVL['lbl'],
                           style='solid', colors=lgd.ISP_SPD_LVL['col'],
                           alpha=lgd.INFO['FitVal']['AlphaObs'] if showfit else 1,
                           ytitle=lgd.INFO['Upld']['Yaxis'], ymin=lgd.ISP['UlSpdMin'], ymax=lgd.ISP['UlSpdMax'])
    lphl.HorLineMatplotlib(ax, row=1, x=df.Timestamp, y=lgd.ISP['UlSpd'],
                           name='%s / %s: target upload speed' % (isrv, iprod), fs=lgd.ISP['UlSpdFsz'],
                           color=lgd.ISP['UlSpdCol'], style=lgd.ISP['UlSpdLty'])

    if showfit:
        lpfl.pltFitLineMatplotlib(ax, row=1, x=df.Timestamp, y=df.ULFit, se=df.ULFit_se95, color=gtcmn['upload'])

    # plot latency values
    lpcl.ColLineMatplotlib(ax, row=2, x=df.Timestamp, y=df.Ping, w=df.PCat,
                           name=lgd.INFO['Lat']['Name'], lbls=lgd.ISP_SPD_LVL['lbl'],
                           style='solid', colors=lgd.ISP_SPD_LVL['col'],
                           alpha=lgd.INFO['FitVal']['AlphaObs'] if showfit else 1,
                           ytitle=lgd.INFO['Lat']['Yaxis'], ymin=lgd.ISP['PgSpdMin'], ymax=lgd.ISP['PgSpdMax'])
    lphl.HorLineMatplotlib(ax, row=2, x=df.Timestamp, y=lgd.ISP['PgSpd'],
                           name='%s / %s: target upload speed' % (isrv, iprod), fs=lgd.ISP['PgSpdFsz'],
                           color=lgd.ISP['PgSpdCol'], style=lgd.ISP['PgSpdLty'])

    if showfit:
        lpfl.pltFitLineMatplotlib(ax, row=2, x=df.Timestamp, y=df.PFit, se=df.PFit_se95, color=gtcmn['ping'])

    # add legend
    ax[0].legend(handles=[Patch(facecolor=lgd.ISP_SPD_LVL['col'][i], edgecolor=lgd.ISP_SPD_LVL['col'][i],
                                label=lgd.ISP_SPD_LVL['lbl'][i]) for i in
                          range(0, len(lgd.ISP_SPD_LVL['lbl']))],
                 bbox_to_anchor=(1.02, 1), loc='upper left')

    # show plot
    fig.tight_layout()
    if showfig:
        fig.show()

    return fig

# pltTimeMatplotlib

, что приводит к графику, как показано ниже

enter image description here

Не совсем как R-сгенерированный график: (

Установка seaborn на место

fig, ax = plt.subplots(nrows=3, ncols=1, sharex=False, figsize=(11, 8))
sns.relplot(data=df, x='Timestamp', y='Download', hue='DLCat', kind='line', ax=ax[0])
sns.relplot(data=df, x='Timestamp', y='Upload', hue='ULCat', kind='line', ax=ax[1])
sns.relplot(data=df, x='Timestamp', y='Ping', hue='PCat', kind='line', ax=ax[2])

и сгенерированная диаграмма выглядит как

enter image description here

вроде лучше, но все еще далеко от того, что R способен доставить!: (

Trying gpplot или plotnine для python тоже не помогли!

Вопрос в том, как выполнить поставленную задачу, отображая данные одной строкой с несколькими цветами в зависимости от диапазона значений значения y?

Пример данных:

Дата; Время; Отметка времени; Отметка времени; Неделя; DoW; ToD; Ping; PCat; PFit; PFit_se95; Загрузка; DLCat; DLFit; DLFit_se95; Загрузка;ULCat; ULFit; ULFit_se95; Ppred; DLpred; ULpred; ID сервера; Спонсор; Имя сервера; Расстояние 2017-01-21; 17: 00: 31.428487; 2017-01-21 17: 00: 31.428487 + 00: 00; 1485018031428487000;3; 5; после полудня; 27,816; плохое; 61,0515; 0,355177064584112; 25,618352217411623; неприемлемо; 41,44800971735411; 0,2411305606621227; 4,568323448491203; плохой; 4,191237824977095; 0,024; 3 5 5 5 5 593 593 593 595 593 595 593 593 593 5363 5361 5363 5773325 5323 5773 5773 5773 5773 5773325361325325325325685685685685685685485685685685685485685685685685685685685685705705705705705705705705705705705705952015951015705955705505505505505505505505505505505505505505505505505505000000000000000000000000000000000000000000000000; 18: 00: 10.586704; 2017-01-21 18: 00: 10.586704 + 00: 00; 1485021610586704000; 3; 5; вечер; 380,293; неприемлемо; 61.0515; 0.355177064584112; 37.7609753962603; плохо; 41.44800971735411; 0,2411305606621227; 3,6552732012186175; неприемлемо; 4,191237824977095; 0,024383210038234328; 211,66761901160282; 72,37097240624252; 4,06512124709557566; 5351; UP; 19; 002: 00: 22: 00: 22: 00: 22: 00: 20: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 20: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22: 00: 22;00: 00; 1485025208426152000; 3; 5; вечер; 18,827; посредственные; 61,0515; +0,355177064584112; +41,25280065801174; плохо; 41,44800971735411; +0,2411305606621227; +4,048148873503645; плохо; +4,191237824977095; 0,024383210038234328; +211,668131829803; 72,37114774317872; +4,065134558347602; 5351; СКП, Вена; +3,19765478758952 2017-01-21; 20: 00: 08.652402; 2017-01-21 20: 00: 08.652402 + 00: 00; 1485028808652402000; 3; 5; вечер; 63.001999999999995; плохой; 61.0515; 0.355177064584112; 53.61886006608488; плохой; 41.448006612354; 0,21111602: 541;4.729607515909154; плохо; 4.191237824977095; 0.024383210038234328; 211.66864498820607; 72.37132319643324; 4.065144413671312; 5351; UPC; Вена; 3.19765478758952;3, 5, вечер, 19,615; посредственные; 61,0515; 0,355177064584112; 25,665746080621417; неприемлемо; 41,44800971735411; 0,2411305606621227; 4,796502111349239; плохо; 4,191237824977095; 0,024383210038234328; 211,66907256458086; 52,3714692 529 523 523 523 525 375 205 203 5361 5251 5252 5321 5321 525332632632632632529532532332632529332529529332529529350529529350529529529529529529529529529529529550829550650550550550550550550550529500020: 55: 07,826120 + 00: 00; 1485032107826120000; 3; 5; вечером; 19,848; посредственные; 61,0515; 0,355177064584112; +30,69814989932061; неприемлемого; +41,44800971735411; 0,2411305606621227; 3,911586957043801; плохо; 4,191237824977095; 0,024383210038234328; 211,6691152360736; 72,371483978208; 4,0651534448884385;5351; UPC; Вена; 3,19765478758952 2017-01-21; 21: 00: 08,710337; 2017-01-2121: 00: 08,710337 + 00: 00; 1485032408710337000; 3; 5; вечером; 24,234; посредственные; 61,0515; 0,355177064584112; +36,243021683794225; неприемлемого; +41,44800971735411; 0,2411305606621227; 4,0998941629635235; плохо; 4,191237824977095; 0,024383210038234328; 211,6691581226184; +72,3714986414851; 4,0651542685342745; 5351; СКП; Вена; +3,19765478758952 2017-01-21; 21: 05: 07,854203; 2017-01-21 21: 05: 07,854203 + 00: 00; 1485032707854203000; 3; 5; вечер; +18,512999999999998; посредственные; 61,0515; +0,355177064584112; +63,89399013998417; посредственные; 41,44800971735411; +0,2411305606621227; +4,708668774848805; плохо; +4,191237824977095; +0,024383210038234328; +211,66920076110216; +72,371513219948; +4,065155087416041; 5351; СКП, Вена; +3,19765478758952 2017-01-21; 21: 10: 08,013815; 2017-01-21 21: 10: 08,013815 + 00: 00; 1485033008013815000; 3; 5; вечер; 19,685; посредственные; 61,0515; +0,355177064584112; +51,11533006159361, бедный, +41,44800971735411; +0,2411305606621227; +3,894617295197565; плохо; +4,191237824977095; 0,024383210038234328; +211,66924354436537; 72,37152784791223; +4,065155909078331; 5351; СКП, Вена; +3,19765478758952 2017-01-21; 21: 15: 08,770008; 2017-01-21 21: 15: 08,770008 + 00: 00; 1485033308770008000; 3; 5; вечер; 18,682000000000002; посредственные; 61,0515; 0,355177064584112; +48,61287097045852; плохо; 41,44800971735411; 0,2411305606621227; 3,499755909245393; неприемлемый; 4,191237824977095; 0,024383210038234328; +211,66928641266225; 72,37154250495021; 4,065156732373711; 5351; СКП; Вена; +3,19765478758952 2017-01-21; 21: 20: 08,335233; 2017-01-21 21: 20: 08,335233 + 00: 00; 1485033608335233000; 3; 5; вечер; 28,765; плохие; +61,146398668079925; 0,3557291530727089; +57,78429519204259; плохой; +44,59951058428095; +0,25946493126643805; 3,617760293577565; неприемлемый; 4,013007169522258; +0,02334632411367308; +211,66932911120443; 72,37155710394762; 4,065157552408914; 5351; СКП; Вена; +3,19765478758952 2017-01-21; 21: 25: 07,595897; 2017-01-21 21: 25: 07,595897 + 00: 00; 1485033907595897000; 3; 5; вечер; 17,808; посредственные; +24,897899953382083; 0,14484759620568127; +40,58008130117975; плохо; 44,95005528438813; +0,2615042822666524; +4,846561592491617; плохо; +4,399405074720899; 0,025594256985591098; +211,66937176633604; 72,37157168810256; +4,065158371610407; 5351; СКП, Вена; +3,19765478758952 2017-01-21; 21: 30: 06,696604; 2017-01-21 21: 30: 06,696604 + 00: 00; 1485034206696604000; 3; 5; ночь; 21,912; посредственные; +25,20639984297373; 0,14664234465919482; 55,758053601793186; беден, 46,40664856554451; 0,26997825138934495; +3,9817180828677077; плохо; +4,296760163388223; +0,02499710346271883; +211,66941439866812; 72,37158626446215; +4,06515919037403; 5351; СКП, Вена; +3,19765478758952 2017-01-21; 21: 35: 07,621935; 2017-01-21 21: 35: 07,621935 + 00: 00; 1485034507621935000; 3; 5; ночь; 19,746; посредственные; +20,880800010908814; 0,12147746171744327; +64,46928022947392; посредственные; 47,555966522290774; 0,27666459616631106; +4,367025026005708; плохо; +3,7017214839869337; +0,021535368837627612; +211,66945729107312; 72,3716009297429; +4,065160014132412; 5351; СКП, Вена; +3,19765478758952 2017-01-21; 21: 40: 06,708005; 2017-01-21 21: 40: 06,708005 + 00: 00; 1485034806708005000; 3; 5; ночь; 17,195; посредственные; +20,638800020061893; +0,12006958727736576; 42,34943908253596; плохо; +49,25391971331539; 0,2865427159535292; 3,659186074866285; неприемлемого; 3,5666574383690395; 0,02074961171039211; +211,66949992131896; 72,37161550538919; 4,065160832855968; 5351; СКП; Вена; +3,19765478758952 2017-01-21; 21: 45: 07,585452; 2017-01-21 21: 45: 07,585452 + 00: 00; 1485035107585452000; 3; 5; ночь; 72,68; плохо; +25,92199981133212; 0,1508054642578618; 33,264833182498464; неприемлемого; +49,51729031610259; 0,2880749174161584; 4,680825273248062; плохо; 4,227379607990749; 0,024593470759095005; +211,66954280689876; 72,37163016833635; 4,065161656483271; 5351; СКП; Вена; +3,19765478758952 2017-01-21; 21: 50: 07,047709; 2017-01-21 21: 50: 07,047709 + 00: 00; 1485035407047709000; 3; 5; ночь; 18,486; посредственные; +25,347199958958193; +0,14746147231188908; +55,29159625271184; беден, 51,28928106388433; +0,29838376277241213; +4,325532270698096; плохо; +4,410035724194347; 0,025656102523777743; 211,6695854907644; +72,37164476231571; +4,065162476236607; 5351; СКП, Вена; +3,19765478758952 2017-01-21; 21: 55: 07,044989; 2017-01-2121: 55: 07,044989 + 00: 00; 1485035707044989000; 3; 5; ночь; 25,735; плохое; 26,069400016204455; 0,1516629890047665; 69,12248336419916; хорошо; +51,77297774514084; 0,3011977471527757; 3,2228828374942005; неприемлемого; 4,175135307718962; 0,02428953101622572; +211,6696282508896; +72,37165938236885; 4,065163297454526; 5351; СКП; Вена; +3,19765478758952 2017-01-21, 22: 00: 08,194176; 2017-01-21 22: 00: 08,194176 + 00: 00; 1485036008194176000; 3; 5; ночь; 21,064; посредственные; +26,207300074355146; 0,1524652450977362; +60,42381825543723; посредственные; 52,6974264844093; 0,3065758785594054; 3,628847526533604; неприемлемого; 4,016201640917695; +0,023364908472339598; +211,6696711752019; 72,37167405855898; 4,0651641218256955; 5351; СКП; Вена; +3,19765478758952 2017-01-21; 22: 05: 06,926742; 2017-01-21 22: 05: 06,926742 + 00: 00; 1485036306926742000; 3; 5; ночь; 20,938000000000002; посредственная; 26,43290009012283; +0,15377771000638701; 55,146925342278784; плохая; 53,36483355320812; 0,31045862810001706; 3,521208779670928; неприемлемая; 4,171720163884893; +0,02426966285963469; +211,66971375506103; 72,37168861697762; 4,065164939581563; 5351; СКП; Вена; +3,19765478758952 2017-01-21; 22: 10: 07,959275; 2017-01-21 22: 10: 07,959275 + 00: 00; 1485036607959275000; 3; 5; ночь; +18,429000000000002; посредственные; 25,399300142795635; 0,1477645736338824; 46,03641783482493; плохо; +52,28476902058916; +0,30417517641976327; 3,4654039347434558; неприемлемого; 4,492844314391853; +0,026137855011246502; +211,66975666274604; +72,37170328748275; 4,065165763633401; 5351; СКП; Вена; +3,19765478758952 2017-01-21; 22: 15: 08,230382; 2017-01-21 22: 15: 08,230382 + 00: 00; 1485036908230382000; 3; 5; ночь; 17,505; посредственные; +25,369000113299577; 0,14758829826745865; 66,96316097320238; посредственные; 54,836440881937804; 0,3190199438946933; 3,5767577697812523; неприемлемого; 3,7779106558622666; +0,021978611778747405; +211,66979946190116; +72,37171792088057; 4,065166585600899; 5351; СКП; Вена; +3,19765478758952 2017-01-21; 22: 20: 08,146512; 2017-01-21 22: 20: 08,146512 + 00: 00; 1485037208146512000; 3; 5; ночь; 264,835; неприемлемая; +49,661299147268366; 0,2889127122930681; 63,13266165897449; посредственная; +55,58929181324165; 0,3233997770494874; 3,6391479124686814; неприемлемая; 3,430706197846676; +0,019958693182013584; 211,6698422104596; 72,37173253697894; 4,065167406596675; 5351; СКП; Вена; +3,19765478758952 2017-01-21; 22: 25: 07,502934; 2017-01-21 22: 25: 07,502934 + 00: 00; 1485037507502934000; 3; 5; ночь; 17,43; посредственные; +49,42969966251185; 0,28756534449448795; +65,1974496994903; посредственные; 55,746088411282095; 0,3243119668470973; 3,6258034857463564; неприемлемого; 3,5727821456185933; 0,020785243194341458; +211,66988487924007; 72,37174712580055; 4,0651682260602975; 5351, СКП, Вена; +3,19765478758952

...