Naming Bar Chart Условная легенда и месячный порядок в R с помощью Plotly - PullRequest
0 голосов
/ 10 февраля 2020

Ниже у меня есть интерактивная сюжетная линия, сверкающая до блестящей гистограммы. Вы заметите, когда вы укажете, что месяцы условно окрашены. Тем не менее, здесь возникают 2 проблемы

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

  2. Условная легенда о цвете просто говорит "n", я не могу понять, как назвать это, я думаю, что это потому, что я написал это в соответствии с заговором и не разбил это как легенда (но я не уверен, что делать).

Спасибо за вашу помощь!

> dput(head(sales, 100))
structure(list(Region = c("Sub-Saharan Africa", "Europe", "Middle East and North Africa", 
"Sub-Saharan Africa", "Europe", "Sub-Saharan Africa", "Asia", 
"Asia", "Sub-Saharan Africa", "Central America and the Caribbean", 
"Sub-Saharan Africa", "Europe", "Europe", "Central America and the Caribbean", 
"Middle East and North Africa", "Australia and Oceania", "Central America and the Caribbean", 
"Europe", "Middle East and North Africa", "Europe", "Asia", "Europe", 
"Europe", "Asia", "Europe", "Europe", "Europe", "Europe", "Australia and Oceania", 
"Central America and the Caribbean", "Europe", "Europe", "Europe", 
"Europe", "Central America and the Caribbean", "Middle East and North Africa", 
"Middle East and North Africa", "Europe", "Sub-Saharan Africa", 
"Europe", "Europe", "Asia", "Middle East and North Africa", "Europe", 
"Middle East and North Africa", "Europe", "Europe", "Australia and Oceania", 
"Australia and Oceania", "Australia and Oceania", "Europe", "Australia and Oceania", 
"Sub-Saharan Africa", "Sub-Saharan Africa", "Asia", "Sub-Saharan Africa", 
"Europe", "Europe", "Central America and the Caribbean", "Europe", 
"Middle East and North Africa", "Central America and the Caribbean", 
"Europe", "Europe", "Europe", "Sub-Saharan Africa", "Sub-Saharan Africa", 
"Sub-Saharan Africa", "Europe", "Europe", "Europe", "Europe", 
"Sub-Saharan Africa", "Sub-Saharan Africa", "Europe", "Sub-Saharan Africa", 
"Sub-Saharan Africa", "Europe", "Asia", "Central America and the Caribbean", 
"Asia", "Middle East and North Africa", "North America", "Sub-Saharan Africa", 
"Sub-Saharan Africa", "Europe", "Europe", "Sub-Saharan Africa", 
"Europe", "Sub-Saharan Africa", "Central America and the Caribbean", 
"Sub-Saharan Africa", "Sub-Saharan Africa", "Australia and Oceania", 
"Middle East and North Africa", "Sub-Saharan Africa", "Sub-Saharan Africa", 
"Europe", "Sub-Saharan Africa", "Sub-Saharan Africa"), Country = c("Chad", 
"Latvia", "Pakistan", "Democratic Republic of the Congo", "Czech Republic", 
"South Africa", "Laos", "China", "Eritrea", "Haiti", "Cameroon", 
"Bosnia and Herzegovina", "Germany", "Barbados", "Algeria", "Palau", 
"Cuba", "Vatican City", "Lebanon", "Lithuania", "Myanmar", "Ukraine", 
"Russia", "Japan", "Russia", "Liechtenstein", "Slovakia", "Albania", 
"Federated States of Micronesia", "Dominica", "Andorra", "Switzerland", 
"Lithuania", "San Marino", "Nicaragua", "Azerbaijan", "Syria", 
"Serbia", "Mauritius", "Germany", "Italy", "Bhutan", "Turkey", 
"Bulgaria", "Pakistan", "Poland", "France", "Fiji", "Australia", 
"Nauru", "Slovenia", "Samoa", "South Africa", "Ghana", "Sri Lanka", 
"Guinea", "Spain", "Moldova", "Dominican Republic", "Luxembourg", 
"Kuwait", "Saint Lucia", "Georgia", "Bosnia and Herzegovina", 
"Iceland", "Mauritius", "Malawi", "Seychelles", "Montenegro", 
"Germany", "Estonia", "Serbia", "Madagascar", "Benin", "Hungary", 
"Djibouti", "Senegal", "Ireland", "Mongolia", "Antigua and Barbuda", 
"Cambodia", "Oman", "United States of America", "Mauritania", 
"Central African Republic", "Albania", "Switzerland", "Ghana", 
"Austria", "Democratic Republic of the Congo", "Dominican Republic", 
"Mauritius", "Cote d'Ivoire", "Samoa", "Kuwait", "Uganda", "Senegal", 
"Moldova", "Cote d'Ivoire", "Niger"), Item_Type = c("Office Supplies", 
"Beverages", "Vegetables", "Household", "Beverages", "Beverages", 
"Vegetables", "Baby Food", "Meat", "Office Supplies", "Cereal", 
"Baby Food", "Office Supplies", "Vegetables", "Clothes", "Snacks", 
"Beverages", "Beverages", "Personal Care", "Snacks", "Meat", 
"Office Supplies", "Snacks", "Cosmetics", "Meat", "Vegetables", 
"Cereal", "Baby Food", "Baby Food", "Beverages", "Office Supplies", 
"Personal Care", "Clothes", "Vegetables", "Fruits", "Cosmetics", 
"Baby Food", "Beverages", "Fruits", "Meat", "Cereal", "Clothes", 
"Clothes", "Cosmetics", "Household", "Cereal", "Baby Food", "Beverages", 
"Personal Care", "Office Supplies", "Cosmetics", "Clothes", "Cereal", 
"Vegetables", "Office Supplies", "Meat", "Fruits", "Personal Care", 
"Cereal", "Personal Care", "Office Supplies", "Fruits", "Vegetables", 
"Cosmetics", "Snacks", "Personal Care", "Office Supplies", "Meat", 
"Personal Care", "Household", "Meat", "Clothes", "Baby Food", 
"Beverages", "Clothes", "Snacks", "Fruits", "Household", "Meat", 
"Baby Food", "Personal Care", "Vegetables", "Baby Food", "Office Supplies", 
"Cosmetics", "Baby Food", "Vegetables", "Household", "Vegetables", 
"Household", "Clothes", "Baby Food", "Personal Care", "Office Supplies", 
"Personal Care", "Fruits", "Beverages", "Personal Care", "Household", 
"Personal Care"), Sales_Channel = c("Online", "Online", "Offline", 
"Online", "Online", "Offline", "Online", "Online", "Online", 
"Online", "Offline", "Offline", "Online", "Offline", "Offline", 
"Offline", "Online", "Online", "Offline", "Offline", "Online", 
"Online", "Offline", "Offline", "Offline", "Offline", "Offline", 
"Offline", "Online", "Offline", "Online", "Online", "Offline", 
"Online", "Online", "Online", "Online", "Online", "Offline", 
"Online", "Offline", "Offline", "Online", "Offline", "Offline", 
"Offline", "Offline", "Online", "Online", "Offline", "Online", 
"Offline", "Online", "Online", "Offline", "Online", "Offline", 
"Online", "Online", "Online", "Offline", "Online", "Offline", 
"Offline", "Online", "Online", "Online", "Online", "Online", 
"Online", "Offline", "Online", "Offline", "Offline", "Online", 
"Offline", "Offline", "Offline", "Online", "Online", "Online", 
"Online", "Offline", "Offline", "Offline", "Online", "Online", 
"Online", "Online", "Offline", "Online", "Offline", "Online", 
"Online", "Online", "Offline", "Offline", "Offline", "Online", 
"Online"), Order_Priority = c("L", "C", "C", "C", "C", "H", "L", 
"C", "L", "C", "M", "M", "C", "C", "C", "L", "H", "L", "H", "H", 
"C", "C", "L", "H", "L", "L", "H", "C", "M", "H", "M", "M", "M", 
"H", "L", "M", "L", "H", "H", "L", "H", "L", "L", "L", "M", "C", 
"M", "L", "H", "H", "M", "C", "M", "L", "M", "C", "L", "M", "L", 
"L", "L", "C", "H", "H", "H", "M", "C", "C", "L", "L", "H", "M", 
"C", "H", "M", "H", "H", "H", "L", "H", "H", "C", "L", "L", "H", 
"H", "M", "M", "H", "L", "L", "H", "H", "M", "H", "L", "C", "H", 
"H", "C"), Order_Date = c("1/27/2011", "12/28/2015", "1/13/2011", 
"9/11/2012", "10/27/2015", "7/10/2012", "2/20/2011", "4/10/2017", 
"11/21/2014", "7/4/2015", "1/1/2016", "10/20/2012", "2/22/2015", 
"1/1/2016", "6/21/2011", "9/19/2013", "11/15/2015", "4/6/2015", 
"4/12/2010", "9/26/2011", "1/2/2016", "8/14/2010", "4/13/2012", 
"9/19/2013", "12/2/2015", "2/26/2017", "1/2/2016", "5/20/2011", 
"10/24/2013", "6/14/2011", "6/20/2015", "8/5/2011", "1/2/2016", 
"7/5/2015", "3/25/2015", "8/22/2013", "1/3/2016", "6/23/2013", 
"5/8/2015", "1/3/2016", "3/10/2013", "3/18/2012", "2/11/2015", 
"10/30/2012", "7/6/2012", "1/4/2011", "10/25/2013", "1/3/2016", 
"3/16/2014", "1/3/2016", "9/30/2010", "11/5/2010", "7/21/2017", 
"7/10/2013", "10/6/2012", "6/4/2011", "4/12/2014", "10/26/2015", 
"8/4/2011", "2/24/2017", "3/30/2011", "5/2/2015", "2/1/2014", 
"3/3/2012", "4/22/2015", "5/12/2011", "12/21/2011", "12/2/2010", 
"8/14/2010", "10/5/2010", "2/8/2012", "9/8/2012", "8/11/2011", 
"10/28/2012", "10/11/2013", "1/3/2016", "7/28/2017", "1/5/2016", 
"1/5/2016", "11/13/2014", "8/26/2012", "7/15/2014", "5/2/2011", 
"11/11/2013", "4/14/2011", "10/4/2012", "5/14/2013", "1/12/2013", 
"10/3/2012", "10/23/2010", "2/6/2014", "9/4/2011", "1/5/2016", 
"7/19/2015", "10/28/2012", "1/5/2016", "10/25/2013", "2/11/2011", 
"1/5/2016", "2/6/2012"), Order_ID = c(292494523, 361825549, 141515767, 
500364005, 127481591, 482292354, 844532620, 564251220, 411809480, 
327881228, 743598735, 479823005, 498603188, 953377091, 181401288, 
500204360, 640987718, 206925189, 221503102, 878520286, 319358670, 
746630275, 246883237, 967895781, 305029237, 223957431, 485685670, 
121455848, 332936227, 692031657, 365978467, 392325484, 917994248, 
603977954, 965943562, 233629691, 664174449, 212921321, 763686978, 
520714461, 637702119, 671986758, 912333714, 540041816, 156722390, 
434299266, 765008771, 593408763, 856333482, 682830178, 574837148, 
365692222, 289660394, 681165492, 594943845, 956044280, 509828126, 
771969211, 178453862, 835580909, 869961678, 278519999, 478492200, 
257427108, 723186051, 353942859, 848183858, 374707877, 322626245, 
351362788, 640653836, 540548217, 821407258, 523904788, 109027135, 
113437545, 672654092, 701131856, 148230302, 230407607, 129491746, 
606854999, 885983693, 260676658, 345045220, 123513209, 900816953, 
452005279, 672439515, 827793490, 704053533, 157518470, 117058742, 
272820842, 548818433, 198175609, 875250566, 511720263, 929683959, 
923598563), Ship_Date = c("2/12/2011", "1/23/2016", "2/1/2011", 
"10/6/2012", "12/5/2015", "8/21/2012", "3/20/2011", "5/12/2017", 
"1/10/2015", "7/20/2015", "2/18/2016", "11/15/2012", "2/27/2015", 
"1/3/2016", "7/21/2011", "10/4/2013", "11/30/2015", "4/27/2015", 
"5/19/2010", "10/2/2011", "1/16/2016", "8/31/2010", "4/22/2012", 
"9/28/2013", "12/26/2015", "2/28/2017", "1/10/2016", "6/19/2011", 
"12/3/2013", "7/20/2011", "7/21/2015", "9/1/2011", "1/16/2016", 
"7/29/2015", "5/9/2015", "8/30/2013", "1/27/2016", "7/18/2013", 
"5/13/2015", "1/25/2016", "4/4/2013", "5/4/2012", "3/2/2015", 
"11/3/2012", "8/1/2012", "2/21/2011", "12/10/2013", "2/20/2016", 
"4/27/2014", "2/15/2016", "11/11/2010", "12/5/2010", "8/22/2017", 
"7/26/2013", "10/21/2012", "7/24/2011", "4/15/2014", "12/15/2015", 
"8/27/2011", "4/14/2017", "4/12/2011", "6/14/2015", "2/26/2014", 
"4/10/2012", "5/13/2015", "5/15/2011", "1/18/2012", "12/25/2010", 
"9/16/2010", "11/14/2010", "3/18/2012", "9/20/2012", "8/19/2011", 
"11/7/2012", "10/27/2013", "1/10/2016", "7/31/2017", "2/11/2016", 
"1/26/2016", "12/20/2014", "9/22/2012", "8/15/2014", "5/4/2011", 
"12/17/2013", "5/20/2011", "11/21/2012", "6/10/2013", "2/2/2013", 
"11/12/2012", "11/20/2010", "3/28/2014", "9/4/2011", "1/11/2016", 
"8/20/2015", "11/24/2012", "2/3/2016", "11/3/2013", "2/26/2011", 
"2/9/2016", "2/26/2012"), Units_Sold = c(4484, 1075, 6515, 7683, 
3491, 9880, 4825, 3330, 2431, 6197, 6245, 9145, 6618, 4322, 9527, 
441, 1365, 2617, 6545, 2530, 4182, 3345, 7091, 725, 3784, 2835, 
4038, 339, 2083, 6401, 16, 6684, 3753, 9353, 3020, 5072, 2834, 
7005, 803, 9835, 9083, 4670, 8675, 9229, 6493, 7659, 1950, 1695, 
6962, 3479, 5941, 5310, 5802, 861, 5959, 3603, 8327, 1699, 7318, 
5814, 9848, 9112, 5330, 7257, 5678, 8412, 5307, 3243, 1130, 4912, 
2562, 9084, 1516, 3924, 2407, 7545, 2148, 9352, 3495, 1586, 8340, 
735, 1118, 8871, 5403, 9158, 609, 7261, 8650, 1344, 3941, 2070, 
9138, 2605, 6425, 3421, 4947, 8252, 2998, 2194), Unit_Price = c(651.21, 
47.45, 154.06, 668.27, 47.45, 47.45, 154.06, 255.28, 421.89, 
651.21, 205.7, 255.28, 651.21, 154.06, 109.28, 152.58, 47.45, 
47.45, 81.73, 152.58, 421.89, 651.21, 152.58, 437.2, 421.89, 
154.06, 205.7, 255.28, 255.28, 47.45, 651.21, 81.73, 109.28, 
154.06, 9.33, 437.2, 255.28, 47.45, 9.33, 421.89, 205.7, 109.28, 
109.28, 437.2, 668.27, 205.7, 255.28, 47.45, 81.73, 651.21, 437.2, 
109.28, 205.7, 154.06, 651.21, 421.89, 9.33, 81.73, 205.7, 81.73, 
651.21, 9.33, 154.06, 437.2, 152.58, 81.73, 651.21, 421.89, 81.73, 
668.27, 421.89, 109.28, 255.28, 47.45, 109.28, 152.58, 9.33, 
668.27, 421.89, 255.28, 81.73, 154.06, 255.28, 651.21, 437.2, 
255.28, 154.06, 668.27, 154.06, 668.27, 109.28, 255.28, 81.73, 
651.21, 81.73, 9.33, 47.45, 81.73, 668.27, 81.73), Total_Profit = c(566105, 
16834.5, 411291.95, 1273303.59, 54669.06, 154720.8, 304602.25, 
319213.8, 139053.2, 782371.25, 553244.55, 876639.7, 835522.5, 
272847.86, 699662.88, 24316.74, 21375.9, 40982.22, 164017.7, 
139504.2, 239210.4, 422306.25, 390997.74, 126055.75, 216444.8, 
178973.55, 357726.42, 32496.54, 199676.38, 100239.66, 2020, 167501.04, 
275620.32, 590454.89, 7278.2, 881868.64, 271667.24, 109698.3, 
1935.23, 562562, 804662.97, 342964.8, 637092, 1604646.23, 1076084.89, 
678510.81, 186927, 26543.7, 174467.72, 439223.75, 1032961.67, 
389966.4, 513999.18, 54354.93, 752323.75, 206091.6, 20068.07, 
42576.94, 648301.62, 145698.84, 1243310, 21959.92, 336482.9, 
1261774.59, 313084.92, 210804.72, 670008.75, 185499.6, 28317.8, 
814065.76, 146546.4, 667128.96, 145323.76, 61449.84, 176770.08, 
416031.3, 5176.68, 1549906.96, 199914, 152033.96, 209000.4, 46400.55, 
107171.48, 1119963.75, 939419.61, 877885.88, 38446.17, 1203365.53, 
546074.5, 222741.12, 289427.04, 198430.2, 228998.28, 328881.25, 
161010.5, 8244.61, 77470.02, 206795.12, 496858.54, 54981.64), 
    Month_RecentYear = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, "January", NA, NA, "January", NA, NA, NA, NA, NA, NA, 
    "January", NA, NA, NA, NA, NA, "January", NA, NA, NA, NA, 
    NA, "January", NA, NA, NA, "January", NA, NA, "January", 
    NA, NA, NA, NA, NA, NA, NA, "January", NA, "January", NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, "January", NA, "January", 
    "January", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, "January", NA, NA, "January", NA, NA, "January", NA), 
    Year = c(2011, 2015, 2011, 2012, 2015, 2012, 2011, 2017, 
    2014, 2015, 2016, 2012, 2015, 2016, 2011, 2013, 2015, 2015, 
    2010, 2011, 2016, 2010, 2012, 2013, 2015, 2017, 2016, 2011, 
    2013, 2011, 2015, 2011, 2016, 2015, 2015, 2013, 2016, 2013, 
    2015, 2016, 2013, 2012, 2015, 2012, 2012, 2011, 2013, 2016, 
    2014, 2016, 2010, 2010, 2017, 2013, 2012, 2011, 2014, 2015, 
    2011, 2017, 2011, 2015, 2014, 2012, 2015, 2011, 2011, 2010, 
    2010, 2010, 2012, 2012, 2011, 2012, 2013, 2016, 2017, 2016, 
    2016, 2014, 2012, 2014, 2011, 2013, 2011, 2012, 2013, 2013, 
    2012, 2010, 2014, 2011, 2016, 2015, 2012, 2016, 2013, 2011, 
    2016, 2012), Month = c("January", "December", "January", 
    "September", "October", "July", "February", "April", "November", 
    "July", "January", "October", "February", "January", "June", 
    "September", "November", "April", "April", "September", "January", 
    "August", "April", "September", "December", "February", "January", 
    "May", "October", "June", "June", "August", "January", "July", 
    "March", "August", "January", "June", "May", "January", "March", 
    "March", "February", "October", "July", "January", "October", 
    "January", "March", "January", "September", "November", "July", 
    "July", "October", "June", "April", "October", "August", 
    "February", "March", "May", "February", "March", "April", 
    "May", "December", "December", "August", "October", "February", 
    "September", "August", "October", "October", "January", "July", 
    "January", "January", "November", "August", "July", "May", 
    "November", "April", "October", "May", "January", "October", 
    "October", "February", "September", "January", "July", "October", 
    "January", "October", "February", "January", "February")), class = c("spec_tbl_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -100L), spec = structure(list(
    cols = list(Region = structure(list(), class = c("collector_character", 
    "collector")), Country = structure(list(), class = c("collector_character", 
    "collector")), Item_Type = structure(list(), class = c("collector_character", 
    "collector")), Sales_Channel = structure(list(), class = c("collector_character", 
    "collector")), Order_Priority = structure(list(), class = c("collector_character", 
    "collector")), Order_Date = structure(list(), class = c("collector_character", 
    "collector")), Order_ID = structure(list(), class = c("collector_double", 
    "collector")), Ship_Date = structure(list(), class = c("collector_character", 
    "collector")), Units_Sold = structure(list(), class = c("collector_double", 
    "collector")), Unit_Price = structure(list(), class = c("collector_double", 
    "collector")), Total_Profit = structure(list(), class = c("collector_double", 
    "collector")), Month_RecentYear = structure(list(), class = c("collector_character", 
    "collector")), Year = structure(list(), class = c("collector_double", 
    "collector")), Month = structure(list(), class = c("collector_character", 
    "collector"))), default = structure(list(), class = c("collector_guess", 
    "collector")), skip = 1), class = "col_spec"))


library(shiny)
library(plotly)
library(dplyr)


ui <- fluidPage(
    plotlyOutput("Year", height = 400),
    plotlyOutput("Month", height = 400),
    uiOutput("back"),
    dataTableOutput("datatable")
)


server <- function(input, output, session) {
    Year <- reactiveVal()
    Month <- reactiveVal()
    observeEvent(event_data("plotly_click", source = "Year"), {Year(event_data("plotly_click", source = "Year")$x)
    Month(NULL)
    })
observe({
    req(Year())
    Month(event_data("plotly_click", source = "Month")$x)
})
output$Year <- renderPlotly({
    sales %>%
        count(Year, wt = Total_Profit) %>%
        plot_ly(x = ~Year, y= ~n, source = "Year", type = "scatter", mode = "lines+markers") %>%
        axis_titles() %>%
        layout(title = "Total Profit by Year") %>%
        event_register('plotly_click')
})
output$Month <- renderPlotly({
    if(is.null(Year())) return(NULL)
    sales %>%
        filter(Year %in% Year()) %>%
        count(Month, wt = Total_Profit) %>%
        plot_ly(x = ~Month, y = ~n, source = "Month", type = "bar", color = ~n, colors = colorRamp(c("red", "orange", "green"))) %>%
        axis_titles() %>%
        layout(title = Year()) %>%
        event_register('plotly_click')
})
output$back <- renderUI({
    if(!is.null(Year()))
        actionButton("clear", "Back", icon("chevron-left"))
})

observeEvent(input$clear,Year(NULL))
}

shinyApp(ui,server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...