Plotly创建聚簇列条形图

时间:2018-05-04 21:21:09

标签: r plotly

我是新手,但我正在尝试创建一个聚集的列条形图,看起来像这样,我可以将鼠标悬停在上面并查看值:

enter image description here

为了实现这一点,这是我到目前为止所做的,但我不知道如何继续以获得上面显示的所需输出(这只是从基础条形图中得到):

A <- c(.32, 1.89, 12.9, 51.85, 29.96)
B <- c(1.06, 2.65, 21.27, 47.34, 27.65)
C <- c(.96, 3.85, 18.32, 51.44, 25.401)

matrixValueData <- as.data.frame(rbind(A, B, C))

plotly::plot_ly(matrixValueData, x = colnames(matrixValueData), y = A, type = 'bar')

任何帮助表示赞赏!谢谢!

1 个答案:

答案 0 :(得分:2)

这是一个开始:

首先,为Rating创建一个有序因子向量:

Rating <- c("Very Poor Value", "Poor Value", "Neutral", "Good Value", "Very Good Value")
Rating <- factor(Rating, levels = Rating, ordered = T)

然后,创建data.frame并将其重新整形为长格式:

matrixValueData <- data.frame(A, B, C, Rating) %>% 
                       tidyr::gather(Group, Score, -Rating)

    print(head(matrixValueData))
#            Rating Group Score
# 1 Very Poor Value     A  0.32
# 2      Poor Value     A  1.89
# 3         Neutral     A 12.90
# 4      Good Value     A 51.85
# 5 Very Good Value     A 29.96
# 6 Very Poor Value     B  1.06

最后,情节:

plot_ly(matrixValueData, 
        x = ~Rating, 
        y = ~Score, 
        color = ~Group, 
        type = "bar", 
        marker = list(line = list(color = "black", width = 1)))

plotly_output

您可以分别使用markertext参数进一步操纵条形颜色和悬停文本。 documentation中的更多细节。