Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Shape the future of the Fabric Community! Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions. Take survey.

Reply
Merinoide
Frequent Visitor

How to order the party of political chart with Deneb

Hi

I'm traing replicat this chart https://powerbi.microsoft.com/en-us/blog/politico-europe-bets-on-microsoft-power-bi-to-report-on-the...

And I can make the chart but, the order of party it's not the correct. How I 'can change the order? 

Merinoide_2-1688898466553.png

 



Merinoide_0-1688898399487.png

 

 

Merinoide_1-1688898421459.png

 

 

{
  "$schema": "https://vega.github.io/schema/vega/v5.json",
  "width": 420,
  "height": 210,
  "signals": [
    {
      "name": "parties",
      "update": "['PSOE','PP','VOX', 'UP', 'Cs', 'ERC', 'Junts', 'PNV', 'Más País', 'EHB', 'CUP', 'Podemos-EU-Anova', 'Compromís', 'CC','BNG','NA+', 'PRC', 'TE', 'ECP']"
    },
    {
      "name": "partyColors",
      "update": "['#e4010b', '#0055a6', '#59c136', '#68327f', '#fa4e00', '#ffc03f', '#02c2b3', '#009526', '#00e2c6', '#c4d600', '#fff200', '#68327f', '#0fddc4', '#ffd700', '#adcfef', '#e3021d', '#c2ce0c', '#037252', '#68327f']"
    },
    {
      "name": "dataLength",
      "update": "length(data('dataset'))"
    },
    {
      "name": "row0Radius",
      "value": 280
    },
    {
      "name": "row1Radius",
      "value": 260
    },
    {
      "name": "row2Radius",
      "value": 240
    },
    {
      "name": "row3Radius",
      "value": 220
    },
    {
      "name": "row4Radius",
      "value": 200
    },
    {
      "name": "row5Radius",
      "value": 180
    },
    {
      "name": "row6Radius",
      "value": 160
    },
    {
      "name": "row0Circ",
      "update": "PI*row0Radius"
    },
    {
      "name": "row1Circ",
      "update": "PI*row1Radius"
    },
    {
      "name": "row2Circ",
      "update": "PI*row2Radius"
    },
    {
      "name": "row3Circ",
      "update": "PI*row3Radius"
    },
    {
      "name": "row4Circ",
      "update": "PI*row4Radius"
    },
    {
      "name": "row5Circ",
      "update": "PI*row5Radius"
    },
    {
      "name": "row6Circ",
      "update": "PI*row6Radius"
    },
    {
      "name": "totalLength",
      "update": "row0Circ+row1Circ+row2Circ+row3Circ+row4Circ+row5Circ+row6Circ "
    }
  ],
  "data": [
    {
      "name": "dataset",
      "transform": [
        {
          "type": "project",
          "fields": [
            "Mandates",
            "Party",
            "Full Opacity By Slicer"
          ]
        },
        {
          "type": "formula",
          "expr": "datum['Party'] === 'PSOE' ? 1 : datum['Party'] === 'PP' ? 2 : datum['Party'] === 'VOX' ? 3 : datum['Party'] === 'UP' ? 4 : datum['Party'] === 'Cs' ? 5 : datum['Party'] === 'ERC' ? 6 : datum['Party'] === 'ECP' ? 7 : datum['Party'] === 'Junts' ? 8 : datum['Party'] === 'PNV' ? 9 : datum['Party'] === 'Más País' ? 10 :  datum['Party'] === 'EHB' ? 11 : datum['Party'] === 'CUP' ? 12: datum['Party'] === 'Podemos-EU-Anova' ? 13 : datum['Party'] === 'Compromís' ? 14 : datum['Party'] === 'CC' ? 15 : datum['Party'] === 'BNG' ? 16 : datum['Party'] === 'NA+' ? 17 : datum['Party'] === 'PRC' ? 19:datum['Party'] === 'TE' ? 19 : null ",
          "as": "party_sort"
        },
        {
          "type": "collect",
          "sort": {
            "field": "party_sort"
          }
        },
        {
          "type": "formula",
          "expr": "sequence(0, datum['Mandates'], 1)",
          "as": "index"
        },
        {
          "type": "flatten",
          "fields": ["index"],
          "as": ["index"]
        },
        {
          "type": "window",
          "ops": ["row_number"],
          "fields": [null],
          "as": ["index"],
          "sort": {
            "field": "Party",
            "order": "ascending"
          }
        }
      ]
    },
    {
      "name": "placement",
      "transform": [
        {
          "type": "sequence",
          "start": 1,
          "stop": {
            "signal": "dataLength+1"
          },
          "as": "index"
        },
        {
          "type": "formula",
          "as": "wholeCirc",
          "expr": "totalLength/dataLength"
        },
        {
          "type": "window",
          "ops": ["sum"],
          "fields": ["wholeCirc"],
          "as": ["cumWholeCirc"]
        },
        {
          "type": "formula",
          "as": "row",
          "expr": "datum.cumWholeCirc <row0Circ?0:datum.cumWholeCirc <row0Circ+row1Circ?1:datum.cumWholeCirc <row0Circ+row1Circ+row2Circ?2:datum.cumWholeCirc <row0Circ+row1Circ+row2Circ+row3Circ?3:datum.cumWholeCirc <row0Circ+row1Circ+row2Circ+row3Circ+row4Circ?4:datum.cumWholeCirc <row0Circ+row1Circ+row2Circ+row3Circ+row4Circ+row5Circ?5:6 "
        },
        {
          "type": "joinaggregate",
          "fields": ["Mandates"],
          "ops": ["count"],
          "groupby": ["row"],
          "as": ["rowCount"]
        },
        {
          "type": "formula",
          "as": "rowCirc",
          "expr": "datum.row==0?(row0Circ/(datum.rowCount-1)):datum.row==1?(row1Circ/(datum.rowCount-1)):datum.row==2?(row2Circ/(datum.rowCount-1)):datum.row==3?(row3Circ/(datum.rowCount-1)):datum.row==4?(row4Circ/(datum.rowCount-1)):datum.row==5?(row5Circ/(datum.rowCount-1)):datum.row==6?(row6Circ/(datum.rowCount-1)):0"
        },
        {
          "type": "window",
          "ops": ["sum"],
          "fields": ["rowCirc"],
          "groupby": ["row"],
          "sort": {
            "field": "index",
            "order": "descending"
          },
          "as": ["cumRowCirc"]
        },
        {
          "type": "formula",
          "as": "cumRowCircAct",
          "expr": "datum.cumRowCirc - datum.rowCirc "
        },
        {
          "type": "formula",
          "as": "theta",
          "expr": "datum.cumRowCircAct==0?0:datum.row==0?(datum.cumRowCircAct/row0Radius):datum.row==1?(datum.cumRowCircAct/row1Radius):datum.row==2?datum.cumRowCircAct/row2Radius:datum.row==3?datum.cumRowCircAct/row3Radius:datum.row==4?datum.cumRowCircAct/row4Radius:datum.row==5?datum.cumRowCircAct/row5Radius:datum.row==6?datum.cumRowCircAct/row6Radius:0"
        },
        {
          "type": "formula",
          "as": "x",
          "expr": "datum.row==0?row0Radius*cos(datum.theta):datum.row==1?row1Radius*cos(datum.theta):datum.row==2?row2Radius*cos(datum.theta):datum.row==3?row3Radius*cos(datum.theta):datum.row==4?row4Radius*cos(datum.theta):datum.row==5?row5Radius*cos(datum.theta):datum.row==6?row6Radius*cos(datum.theta):0"
        },
        {
          "type": "formula",
          "as": "y",
          "expr": "datum.row==0?row0Radius*sin(datum.theta):datum.row==1?row1Radius*sin(datum.theta):datum.row==2?row2Radius*sin(datum.theta):datum.row==3?row3Radius*sin(datum.theta):datum.row==4?row4Radius*sin(datum.theta):datum.row==5?row5Radius*sin(datum.theta):datum.row==6?row6Radius*sin(datum.theta):0"
        },
        {
          "type": "window",
          "sort": {
            "field": "theta",
            "order": "ascending"
          },
          "ops": ["row_number"],
          "fields": ["row_number"],
          "as": ["lookup"]
        },
        {
          "type": "lookup",
          "from": "dataset",
          "key": "index",
          "fields": ["lookup"],
          "values": [
            "Party",
            "Full Opacity By Slicer"
          ],
          "as": [
            "Party",
            "Full Opacity By Slicer"
          ]
        }
      ]
    }
  ],
  "scales": [
    {
      "name": "x",
      "type": "linear",
      "round": true,
      "nice": true,
      "zero": true,
      "domain": {
        "field": "x",
        "data": "placement"
      },
      "range": "width"
    },
    {
      "name": "y",
      "type": "linear",
      "round": true,
      "nice": true,
      "zero": true,
      "domain": {
        "field": "y",
        "data": "placement"
      },
      "range": "height"
    },
    {
      "name": "color",
      "type": "ordinal",
      "domain": {"signal": "parties"},
      "range": {"signal": "partyColors"}
    }
  ],
  "marks": [
    {
      "name": "marks",
      "type": "symbol",
      "from": {"data": "placement"},
      "encode": {
        "enter": {
          "x": {
            "scale": "x",
            "field": "x"
          },
          "y": {
            "scale": "y",
            "field": "y"
          },
          "shape": {"value": "circle"},
          "size": {"value": 130},
          "stroke": {"value": "grey"},
          "tooltip": [
            {
              "title": "Party",
              "field": "Party",
              "type": "nominal"
            }
          ],
          "fill": {
            "type": "ordinal",
            "field": "Party",
            "scale": "color"
          }
        },
        "update": {
          "opacity": {
            "signal": "datum['Full Opacity By Slicer']===true?1:0.15"
          }
        }
      }
    },
    {
      "type": "text",
      "data": [{}],
      "encode": {
        "update": {
          "text": {
            "signal": "dataLength"
          },
          "align": {"value": "center"},
          "fill": {"value": "#595959"},
          "x": {"signal": "width /2"},
          "y": {"signal": "height -20"},
          "fontSize": {"value": 60},
          "fontWeight": {
            "value": "bold"
          },
          "font": {
            "value": "sans-serif"
          }
        }
      }
    },
    {
      "type": "text",
      "data": [{}],
      "encode": {
        "update": {
          "text": {
            "value": ["Total Seats"]
          },
          "align": {"value": "center"},
          "fill": {"value": "#595959"},
          "x": {"signal": "width /2"},
          "y": {"signal": "height -80"},
          "fontSize": {"value": 19},
          "fontWeight": {
            "value": "normal"
          },
          "font": {
            "value": "sans-serif"
          }
        }
      }
    }
  ]
}

 

 

1 ACCEPTED SOLUTION
Merinoide
Frequent Visitor

Hi @danextian I got it.

 

I have to change this part and put the attribute and order of this.

Merinoide_0-1689015098214.png

 



 

        {
          "type": "window",
          "ops": ["row_number"],
          "fields": [null],
          "as": ["index"],
          "sort": {
            "field": "party_sort",
            "order": "descending"
          }

 

 

View solution in original post

3 REPLIES 3
Merinoide
Frequent Visitor

Hi @danextian I got it.

 

I have to change this part and put the attribute and order of this.

Merinoide_0-1689015098214.png

 



 

        {
          "type": "window",
          "ops": ["row_number"],
          "fields": [null],
          "as": ["index"],
          "sort": {
            "field": "party_sort",
            "order": "descending"
          }

 

 

danextian
Super User
Super User

Hi @Merinoide ,

 

It looks like your party sort column is not in the correct data type. It is a text string instead of a number. A number column would be italicized and right aligned. Try chaging the data type in Power Query and see it goes.

The number columns below are italicized and right-aligned.

danextian_0-1688899708320.png

 










Did I answer your question? Mark my post as a solution!


Proud to be a Super User!









"Tell me and I’ll forget; show me and I may remember; involve me and I’ll understand."
Need Power BI consultation, get in touch with me on LinkedIn or hire me on UpWork.
Learn with me on YouTube @DAXJutsu or follow my page on Facebook @DAXJutsuPBI.

Hi @danextian thanks for your answer.

Looks like that the type of value it's not the reason

I changed this but... nothing

 

Merinoide_0-1688901823670.pngMerinoide_1-1688901849488.png

 

Helpful resources

Announcements
November Carousel

Fabric Community Update - November 2024

Find out what's new and trending in the Fabric Community.

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

Live Sessions with Fabric DB

Be one of the first to start using Fabric Databases

Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.