what is the best practice to create graphs for Likert surveys?

Ulzii
Ulzii Hawaii ⚪️
edited September 7 in Card Building

Aloha,

I've been having a hard time creating some useful graphs out of Likert surveys. What I want to do is to create something like this in this picture. This is one was created in Tableau using Gantt chart, but I couldn't find what value put on the start and end date because it seems it only takes dates as a value. I hope you understand my poor English, thanks a lot!


https://www.datarevelations.com/resources/likert-scales-the-final-word/

Comments

  • GrantSmith
    GrantSmith Indiana 🔴

    Hi @Ulzii

    I don't believe this is an option currently out of the box. You could look into writing a custom app do do this specific type of visualization.


    https://developer.domo.com/docs/dev-studio/dev-studio-overview

  • BrettG
    BrettG London, UK

    domo

    💎

    Is the issue that you want to sync the 0 line at 50% to give the visual offset from centre/neutral?

    If not, a Horizontal 100% Stacked Bar would be a simple way to give you the mix. I've done similar for a 6-point scale questionnaire (image below)

    If the offset from centre is needed, then I think the Gant chart is possible, but far more involved and needing math on the specific answer option's % of Total responses per Question, then changing those to date ranges. As you say the Gant Card's need for dates would require you to pick a date for the 0-point; then calculate the proportion of answers above/below, and use FROM_UNIXTIME to add/minus the value per response (i.e. 50 days below; 50 days above. and each percentage point is a day [86400 seconds for unix time]).



  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🟤

    I think you can also do this with a horizontal bar chart if you want to have the zero line down the middle. This example isn't in percentages, but hopefully gives an example of the look you are going for.

    Depending on what your data looks like, you would multiply sometimes and never values to make them appear to the left of the zero line, but keep the original value to display in the data label settings so the negative value isn't actually displayed. Hope this helps.

  • Ulzii
    Ulzii Hawaii ⚪️
    edited September 14

    @BrettG

    @MarkSnodgrass

    @GrantSmith

    Thanks, everyone for the help! I've been trying to make it on Gantt Chart for the last few days. What I found is that the dates are just don't work with Likert Survey since I can't hide the dates in DOMO see the picture below. Now I'm thinking about using a Horizontal 100% Stacked Bar, but the thing is they are not starting from the same point, so it makes it difficult for the viewer to distinguish them. I want to start every answer from the same point. Could please check my last image, and share your idea how to make something Tree graphs like this, Is there any way to do that, any suggestion will be appreciated:)

    Ulzii


    I can't remove the dates here

    This is like the best diagram for Likert Survey I've ever seen


    Any suggestion on how to create this kind of diagram?


  • GrantSmith
    GrantSmith Indiana 🔴

    You could hack another “blank” option to calculate the amount of negative to offset each category by and set a color rule to make it white but it’s really messy and difficult to get it right. You might need to to it in an ETL.

  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🟤

    I believe I was able to accomplish what you are wanting to do with a horizontal bar chart and using Magic ETL to do some of the calculations. My end result looks like this:

    My ETL looks like this:

    My sample data looked liked this:

    You should be able to copy and paste this into a blank Magic ETL to see what is going on in each tile:

    {"contentType":"domo/dataflow-actions","data":[{"name":"Test Survey","id":"faab2c3b-21ca-4076-84a7-4c25a114b3db","type":"LoadFromVault","gui":{"x":84,"y":132,"color":3238043,"colorSource":null},"dependsOn":[],"removeByDefault":false,"notes":[],"dataSourceId":"5b9cf063-f857-45c0-bb0f-8e9391799961","executeFlowWhenUpdated":false,"onlyLoadNewVersions":false,"columnSettings":{},"visiblePartitionColumn":null},{"name":"Group By Candy & Rating and Count Ratings","id":"0a380f47-1cc1-47a4-9f58-b6ff67937a9d","type":"GroupBy","gui":{"x":204,"y":132,"color":null,"colorSource":null},"dependsOn":["faab2c3b-21ca-4076-84a7-4c25a114b3db"],"removeByDefault":false,"notes":[],"addLineNumber":false,"lineNumberFieldname":null,"giveBackRow":false,"allRows":false,"groups":[{"name":"Candy"},{"name":"Rating"}],"partitionedAggregation":false,"fields":[{"name":"RatingCount","source":"Rating","type":"COUNT_ALL","valuefield":null}]},{"name":"Group By Candy and Sum Rating Count","id":"d401dd58-2e2a-4273-adb2-6200a3add8cb","type":"GroupBy","gui":{"x":324,"y":24,"color":null,"colorSource":null},"dependsOn":["0a380f47-1cc1-47a4-9f58-b6ff67937a9d"],"removeByDefault":false,"notes":[],"addLineNumber":false,"lineNumberFieldname":null,"giveBackRow":false,"allRows":false,"groups":[{"name":"Candy"}],"partitionedAggregation":false,"fields":[{"name":"TotalVotes","source":"RatingCount","type":"SUM","valuefield":null}]},{"name":"Join Data","id":"4e7a35ee-8da1-486f-9c6c-09f22a134dc8","type":"MergeJoin","gui":{"x":456,"y":132,"color":null,"colorSource":null},"dependsOn":["0a380f47-1cc1-47a4-9f58-b6ff67937a9d","d401dd58-2e2a-4273-adb2-6200a3add8cb"],"removeByDefault":false,"notes":[],"joinType":"INNER","step1":"0a380f47-1cc1-47a4-9f58-b6ff67937a9d","step2":"d401dd58-2e2a-4273-adb2-6200a3add8cb","keys1":["Candy"],"keys2":["Candy"],"schemaModification1":[],"schemaModification2":[{"name":"Candy","rename":"","remove":true}],"partitioningInputId":""},{"name":"Calc Percent of Total","id":"93c18ba3-6f2a-4b5e-a0fe-af3f49b46b0a","type":"ExpressionEvaluator","gui":{"x":576,"y":132,"color":null,"colorSource":null},"dependsOn":["4e7a35ee-8da1-486f-9c6c-09f22a134dc8"],"removeByDefault":false,"notes":[],"expressions":[{"expression":"`RatingCount` / `TotalVotes`","fieldName":"PctOfTotal","settings":null},{"expression":"CASE when `Rating` < 3 then `PctOfTotal`*-1 else `PctOfTotal` END","fieldName":"PctOfTotal","settings":null}]},{"name":"Test Survey DF","id":"93a1a776-c0e3-40ef-8ef9-f7973fc71960","type":"PublishToVault","gui":{"x":708,"y":132,"color":null,"colorSource":null},"dependsOn":["93c18ba3-6f2a-4b5e-a0fe-af3f49b46b0a"],"removeByDefault":false,"notes":[],"dataSource":{"guid":"5ec4d46e-6612-4186-9603-d9fbe39bc68c","type":"DataFlow","name":"Test Survey DF","cloudId":"domo"},"versionChainType":"REPLACE","partitionIdColumns":[]}]}
    
    
    
  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🟤

    To further explain the above (it was getting challenging to continue to write after all that pasting) The first group by groups by Candy and Rating Value and counts the Rating Value. The second group by groups by Candy and sums the rating count. I then do an inner join on Candy. The formula tile calculates the percent of total by dividing the rating count by the total votes. It also makes the percent negative if rating value is less than 3. I used the following rating scale.

    1 - I dislike them a lot

    2 - I dislike them

    3 - I like them

    4 - I like them a lot

    I used a beast mode to give the rating value the friendly names and put that in the series and used color rules to assign the custom colors.

    Hope this helps.

  • Ulzii
    Ulzii Hawaii ⚪️

    thanks, @GrantSmith :)

    Thanks a lot for helping me to solve my problem @MarkSnodgrass , I truly appreciate it! I followed your suggestions, but I couldn't find a blank ETL in the ETL directory, so I followed your steps above. One thing I still have a hard time with is understanding your calculation part. I tried to multiply by 100% on the formula field but it showed an error. I will really appreciate it if you share a piece of your code for the calculation part. I included all my screenshots, could you be able to see them and tell me what I'm missing.

  • Ulzii
    Ulzii Hawaii ⚪️
  • Ulzii
    Ulzii Hawaii ⚪️
  • Ulzii
    Ulzii Hawaii ⚪️
  • Ulzii
    Ulzii Hawaii ⚪️
  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🟤

    @Ulzii happy to help. Here is what my formula tile looks like:


  • Ulzii
    Ulzii Hawaii ⚪️


  • Ulzii
    Ulzii Hawaii ⚪️

    thank you for helping out! I have one last question which is how did you adjust your ratings with the numbers in the analyzer? I'm kind of lost here now.


  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🟤

    Here is what my Analyzer looks like.

    This is what my beast mode looks like for the rating name:

    (CASE when `Rating` = 1 then 'I dislike them a lot'
    when `Rating` = 2 then 'I dislike them'
    when `Rating` = 3 then 'I like them'
    when `Rating` = 4 then 'I like them a lot'
    else 'Neutral'
    end	)
    


    This is what my color rules look like:


  • Ulzii
    Ulzii Hawaii ⚪️

    Thanks, @MarkSnodgrass! You saved me, today I showed my boss my graphs using your instruction, and she liked it, so I keep my job. Thanks a lot! and Domo Community too!

  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🟤

    Great to hear @Ulzii ! If you can accept my answers for your question it will help the rest of the community.

  • GrantSmith
    GrantSmith Indiana 🔴

    This is what I live about this community. Users coming together to help each other out and solve problems.

  • Ulzii
    Ulzii Hawaii ⚪️

    I love to accept your answer a thousand times? but how do you do that, so far I've been just clicking the like button? @MarkSnodgrass

  • Ulzii
    Ulzii Hawaii ⚪️

    I have another question on this topic, I'm sorry for asking too many questions 😌 After I created the visualization, is there any way to adjust the sorting. In my case, I want to show the Strongly Agree at the far right end and strongly disagree at the other end, and if it is possible to separate N/A answers. Can you see my graph and share your idea :)

    as you see Strongly Agree is in the middle, and Strongly Disagree too. Below is something I want, but I think it is impossible to separate N/A answers in DOMO.


  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🟤

    @Ulzii if you rating values are like what I had in my beast mode here:

    (CASE when `Rating` = 1 then 'I dislike them a lot'
    when `Rating` = 2 then 'I dislike them'
    when `Rating` = 3 then 'I like them'
    when `Rating` = 4 then 'I like them a lot'
    else 'Neutral'
    end	)
    

    Then you can drag Rating into the Sorting properties and it will sort it like you want. Make sure you drag Rating and not Rating name.

  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🟤

    @Ulzii I wonder if when you created this post, you chose New Topic instead of New Question. Maybe that is why you can't accept an answer.

    @Anna Yardley can you help with this?