Forum Discussion

jaryszek's avatar
jaryszek
Icon for Super User rankSuper User
10 months ago
Solved

Make a clustered bar chart with conditional formatted leged in Deneb.

Hello, I am trying to use Deneb as my chart in ordet to replace clustered bar chart with legend colors.  For bar chart without legend I am using Dax Measure like this: Color by Rank = VAR r ...
  • dm-p's avatar
    dm-p
    10 months ago

    Hi jaryszek,

     

    You can assign a value to a color encoding by using the field operator in a scale's range after specifying the field to use for its domain, e.g.:

     

    {
      ...
      "encoding": {
        ...
        "color": {
          "field": "MeterCategory",
          "scale": {
            "range": {"field": "Color by Rank"}
          },
          ...
        },
        ...
      },
      ...
    }

    This is also covered in the Vega-Lite documentation, with an example available here.

     

    Full spec (based on yours above and corrected to work for this case). The visual data set consists of:

    • Date (x encoding)
    • Sum of CostInBillingCurrency (y encoding)
    • MeterCategory (color encoding)
    • Color by Rank (color range)
    {
      "data": {
        "name": "dataset"
      },
      "mark": {
        "type": "bar",
        "tooltip": true
      },
      "encoding": {
        "x": {
          "field": "Date",
          "type": "temporal",
          "timeUnit": "yearmonthdate",
          "axis": {
            "labelAngle": -40,
            "title": null
          }
        },
        "y": {
          "field": "Sum of CostInBillingCurrency",
          "type": "quantitative",
          "axis": {
            "title": null
          }
        },
        "color": {
          "field": "MeterCategory",
          "scale": {
            "range": {"field": "Color by Rank"}
          },
          "legend": {
            "title": "Rank",
            "labelExpr": "datum.value === 'Others' ? 'Others' : 'Rank ' + datum.value",
            "orient": "right"
          }
        },
        "order": {
          "field": "MeterCategory"
        }
      },
      "config": {
        "view": {
          "stroke": null
        },
        "axisY": {
          "grid": true
        },
        "bar": {
          "size": 10
        }
      }
    }

     

    I've also attached a copy of your workbook, along with this working visual.

     

    Thanks for using Deneb!

     

    Daniel