Forum Discussion

Salle's avatar
Salle
Advocate I
3 years ago
Solved

Deneb Vega-lite: AND/OR logic

Hello everyone,

I have a control chart (see below) which I want to set a conditional color "red" if the Diameter is above or below required limits, "Diameter LSL" or "Diameter USL". If within limits "darkblue"-

I struggle to find the correct syntax in Deneb to add AND/OR statements to the condition test.
if ((Diameter > Diameter USL) OR (Diameter < Diameter LSL))...

How can I modify the code below (or is it an better way to achieve the results I want?) to also set the mark below Diameter LSL to "red"?

 },
          "encoding": {
            "color": {
	            "condition": {
	              "test":  "datum['Diameter'] > datum['Diameter USL']", "value": "red"
                     },
	              "value": "darkblue"
	    },
...

 

2 Replies

  • dm-p's avatar
    dm-p
    Super User

    Hi Salle,

    You can use JavaScript logical operators in expressions, so something like the following will work:

    "test":  "datum['Diameter'] > datum['Diameter USL'] || datum['Diameter'] < datum['Diameter LSL']"
    • And: &&
    • Or: ||
    • Not equal: !=

    If you're using the predicate approach (using more structured objects rather than expressions), you can use 'predicate composition' to combine these using arrays - there's an example at the bottom of the doc page here.

    Hopefully this will help get you moving. Good luck!

    Regards,

    Daniel

  • dm-p , I did try using your suggestion with | | before but got error message. I guess it was related to wrong placing of " " because now it works perfectly. Thanks again!

     

    By the way, great job with Deneb! I am just scratching the surface since a couple of days and really like what I seen so far!