Определение цвета на повторяющихся слоях в Vega-Lite

У меня есть это определение диаграммы Vega-Lite

  {
   "$schema":"https://vega.github.io/schema/vega-lite/v4.json",
   "data":{
      "values":[
         {
            "stepid":"4444",
            "stepname":"Name1",
            "serialnumber":"SN3444444",
            "lowval":45000,
            "highval":45500,
            "resultdecimal":45466
         },
         {
            "stepid":"4444",
            "stepname":"Name1",
            "serialnumber":"SN3444445",
            "lowval":45000,
            "highval":45500,
            "resultdecimal":45433
         },
         {
            "stepid":"4444",
            "stepname":"Name1",
            "serialnumber":"SN3444446",
            "lowval":45000,
            "highval":45500,
            "resultdecimal":45400
         },
         {
            "stepid":"4444",
            "stepname":"Name1",
            "serialnumber":"SN3444447",
            "lowval":45000,
            "highval":45500,
            "resultdecimal":45422
         },
         {
            "stepid":"4444",
            "stepname":"Name1",
            "serialnumber":"SN3444448",
            "lowval":45000,
            "highval":45500,
            "resultdecimal":45403
         },
         {
            "stepid":"4444",
            "stepname":"Name1",
            "serialnumber":"SN3444449",
            "lowval":45000,
            "highval":45500,
            "resultdecimal":45422
         }
      ]
   },
   "repeat":{
      "layer":[
         "lowval",
         "highval",
         "resultdecimal"
      ]
   },
   "spec":{
      "mark":{
         "type":"line",
         "strokeWidth":3,
         "point":{
            "size":45,
            "filled":true
         }
      },
      "encoding":{
         "x":{
            "field":"serialnumber",
            "type":"ordinal",
            "axis":{
               "labelAngle":-70,
               "title":"Selected Tests",
               "titleFontSize":10
            }
         },
         "y":{
            "field":{
               "repeat":"layer"
            },
            "type":"quantitative",
            "axis":{
               "title":"Teststeps in selected Tests",
               "titleFontSize":10
            },
            "scale":{
               "domain":[
                  45000,
                  45500
               ]
            }
         },
         "tooltip":[
            {
               "field":"serialnumber",
               "type":"ordinal"
            },
            {
               "field":"resultdecimal",
               "type":"quantitative"
            }
         ],
         "color":{
            "datum":{
               "repeat":"layer"
            },
            "type":"nominal"
         }
      }
   },
   "config":{
      "font":"Roboto",
      "axisX":{
         "labelFontSize":9
      },
      "axisY":{
         "labelFontSize":9
      }
   }
}

Результат такой:  введите описание изображения здесь

Я хочу добиться, чтобы определить цвета линий на основе имен полей.

if( highval) 
color = red
if( lowval) 
color = red
if (resultdecimal)
color = blue

так что min-max отображается красным цветом, результат - синим.

Если есть другой способ отображения трех разных линий диаграммы и правильного определения значений, любые идеи приветствуются!


person Andreas Zeiner    schedule 19.07.2020    source источник


Ответы (1)


Думаю, я нашел ответ:

здесь определение условного цвета vega-lite

{
  "$schema": "https://vega.github.io/schema/vega-lite/v4.json",
  "data": {
    "values": [
   {
      "stepid":"4444",
      "stepname":"Name1",
      "serialnumber":"SN3444444",
      "lowval":45000,
      "highval":45500,
      "resultdecimal":45466
   
},
   {
       "stepid":"4444",
      "stepname":"Name1",
      "serialnumber":"SN3444445",
    "lowval":45000,
      "highval":45500,
      "resultdecimal":45433
   
},
   {
      "stepid":"4444",
      "stepname":"Name1",
      "serialnumber":"SN3444446",
         "lowval":45000,
      "highval":45500,
      "resultdecimal":45400
   
},
   {
      "stepid":"4444",
      "stepname":"Name1",
      "serialnumber":"SN3444447",
    "lowval":45000,
      "highval":45500,
      "resultdecimal":45422
   
},
   {
      "stepid":"4444",
      "stepname":"Name1",
      "serialnumber":"SN3444448",
       "lowval":45000,
      "highval":45500,
      "resultdecimal":45403
   
},
   {
        "stepid":"4444",
      "stepname":"Name1",
      "serialnumber":"SN3444449",
     "lowval":45000,
      "highval":45500,
      "resultdecimal":45422
}
]
  },
  "repeat": {
    "layer": ["lowval", "highval","resultdecimal"]
  },
  "spec": {
                  "mark":{
                  "type":"line",
                  "strokeWidth":3,
                  "point":{
                     "size":45,
                     "filled":true
                  }
               },
    "encoding": {
      "x": {
        "field": "serialnumber",
        "type": "ordinal",
            "axis":{
          "labelAngle":-70,
          "title":"Selected Tests",
          "titleFontSize":10
        }
      },
      "y": {
        "field": {"repeat": "layer"},
        "type": "quantitative",
                      "axis": {
                  "title": "Teststeps in selected Tests",
                  "titleFontSize": 10},
                  "scale":{
                        "domain":[45000,45500]
                     }

      },
        "tooltip":[
          {
            "field":"serialnumber",
            "type":"ordinal"
          },
          {
            "field":"resultdecimal",
            "type":"quantitative"
          }
                  ],
                  
      "color": {
        "datum": {"repeat": "layer"},
        "type": "nominal",
       "scale": {
        "range": ["#e7ba52", "#c7c7c7", "#e7ba52"]
      },
      "legend": {"title": "Weather type"}
      }
    }
  },
                      "config": {
                        "font": "Roboto",
                        "axisX": {
                            "labelFontSize": 9
                        },
                        "axisY": {
                            "labelFontSize": 9
                        }
                    }
}
person Andreas Zeiner    schedule 19.07.2020