Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Bar plot does not render in horizontal orientation

I have dataset of companies and counts that I would like to render as a horizontal bar plot:

       name        count
    1  Company1     7067
    2  Company2      810
    3  Company3     9524
    4  Company4     2878
    5  Company5     4014
    6  Company6     6565
    7  Company7      772
    8  Company8     4810
    9  Company9      785
    10 Company10    1330

For this purpose I have following piece of code:

data %>%
plot_ly(
    x = ~name,
    y = ~count,
    marker = list(color = colors[1]),
    type = 'bar',
    orientation = 'h'
    ) %>%
  layout(
    paper_bgcolor = "#F5F5F5",
    plot_bgcolor = "#F5F5F5",
    xaxis = list(
      title = "company",
      categoryorder = "total descending"
    ),
    yaxis = list(
      title = "count"
    )
  )

The code works well until I add orientation = 'h' line. Then it does not throw any error but it renders blank (empty chart). Is there anything that does not fit together with the horizontal orientation?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

The issue is that you mapped the categorical column on x and the numeric on y. Simply switch that and you are fine

library(plotly)

data %>%
  plot_ly(
    y = ~name,
    x = ~count,
    # marker = list(color = colors[1]),
    type = "bar",
    orientation = "h"
  ) %>%
  layout(
    paper_bgcolor = "#F5F5F5",
    plot_bgcolor = "#F5F5F5",
    xaxis = list(
      title = "company",
      categoryorder = "total descending"
    ),
    yaxis = list(
      title = "count"
    )
  )

DATA

data <- structure(list(name = c(
  "Company1", "Company2", "Company3", "Company4",
  "Company5", "Company6", "Company7", "Company8", "Company9", "Company10"
), count = c(
  7067L, 810L, 9524L, 2878L, 4014L, 6565L, 772L, 4810L,
  785L, 1330L
)), class = "data.frame", row.names = c(
  "1", "2",
  "3", "4", "5", "6", "7", "8", "9", "10"
))
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading