Forum Discussion

DW868990's avatar
DW868990
Helper IV
3 years ago
Solved

Deneb - Only Show Data Labels Above a set value

Hi,

Is it possible to show data labels in Deneb for only values above a set value.

I have a visual which for the low values it clutters the x axis with all the data labels, so ideally i would only like to show data labels for larger values.

 

Thanks

 

JJ

  • Hi DW868990,

    Assuming you're using Vega-Lite, you can set the opacity for your text marks based on a condition, e.g. to show for a field named Sales with values over 1000, something like this would work:

     

    "mark": {
      "type": "text",
      "opacity": {
        "expr": "if(datum['Sales'] >= 1000, 1, 0)"
      }
    }

     

    This uses an ExprRef to set the mark's opacity to 1 (fully opaque) if the condition is satisfied.

    If you prefer to only plot marks for the values that satisfy the condition rather than make them invisible, in your text mark's layer, you could also add a filter transform that satisfies the condition, e.g.:

     

    {
        ...
        {
          "transform": [
            {
              "filter": "datum['Sales'] >= 1000"
            }
          ],
          "mark": {"type": "text"},
          ...
        }
        ...
    }

     

    As you're using expressions, the value doesn't need to be fixed, and you could use another field or other qualifier as the comparator.

    Regards,

    Daniel

2 Replies

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

    Hi DW868990,

    Assuming you're using Vega-Lite, you can set the opacity for your text marks based on a condition, e.g. to show for a field named Sales with values over 1000, something like this would work:

     

    "mark": {
      "type": "text",
      "opacity": {
        "expr": "if(datum['Sales'] >= 1000, 1, 0)"
      }
    }

     

    This uses an ExprRef to set the mark's opacity to 1 (fully opaque) if the condition is satisfied.

    If you prefer to only plot marks for the values that satisfy the condition rather than make them invisible, in your text mark's layer, you could also add a filter transform that satisfies the condition, e.g.:

     

    {
        ...
        {
          "transform": [
            {
              "filter": "datum['Sales'] >= 1000"
            }
          ],
          "mark": {"type": "text"},
          ...
        }
        ...
    }

     

    As you're using expressions, the value doesn't need to be fixed, and you could use another field or other qualifier as the comparator.

    Regards,

    Daniel