Сюжетно, невозможно изменить цвета отдельных полос в r

Я действительно новичок в использовании сюжета, и после прочтения документации я не могу понять, почему этот код не меняет цвета отдельных полос.

Мой набор данных - mtcars, сокращенный только до столбцов MPG и CYL.

Это код, который я использую:

mtcars %>%
  plot_ly(x = ~cyl,
          y = ~mpg, 
          type = "bar",
          marker = list(color = c('rgba(204,204,204,1)', 'rgba(222,45,38,0.8)',
                                  'rgba(204,204,204,1)') )
          ) %>%
  layout(title = "Test Chart",
         xaxis = list(title = "Cylinders"),
         yaxis = list(title = "MPG")
         )

По какой-то причине все 3 полосы (4/6/8 цилиндров) отображаются черным цветом. Что я делаю не так?

Спасибо.

Можете ли вы сделать свой код воспроизводимым?

BIM 10.08.2018 15:58

Просто удалите _reduced за кодом mtcars, работает также с полным фреймом данных

mischva11 10.08.2018 16:00

проблема в том, что вы строите 32 столбчатые диаграммы, потому что данные для гистограмм используются неправильно. Каждое значение цилиндра имеет одно значение миль на галлон, которое представляет собой одну отдельную полосу (у вас 32 пары). Таким образом, вы получаете 32 бара на 4/6/8, которые перекрывают друг друга.

mischva11 10.08.2018 16:08
0
3
1 062
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Спасибо @ mischva11!

Да, теперь я понимаю, что мои данные не соответствуют действительности. Следующее исправило это и все равно достигло того, что я изначально пытался сделать:

df_v <- sqldf("
          SELECT cyl, AVG(mpg) AS 'Average MPG'
          FROM mtcars_reduced
          GROUP BY cyl
          ORDER BY cyl DESC


          ")


df=df_v

colors2 <- c('#CC1480', '#FF9673', '#E1C8B4')


                     p <- plot_ly(
                     x = df$cyl,
                     y = df$'Average MPG', 
                     type = "bar",
                     marker = list(color = colors2)
                                 )%>%
                     ##color = I("black"))

                     layout(title = "Test Chart",
                            xaxis = list(title = "Cylinders"),
                            yaxis = list(title = "MPG")
                            )


p

И заработало как надо. Спасибо.

Другое решение, использующее только dplyr:

library(dplyr)
library(plotly)

mtcars %>%
  group_by(cyl) %>%
  summarise(Average_MPG = mean(mpg)) %>%
  plot_ly(x = ~cyl,
          y = ~Average_MPG, 
          type = "bar",
          marker = list(color = c('#CC1480', '#FF9673', '#E1C8B4') )
          )%>%
  layout(title = "Test Chart",
         xaxis = list(title = "Cylinders"),
         yaxis = list(title = "MPG")
  )

Выход:

enter image description here

Другие вопросы по теме