[英]Drawing a Bar Chart with Plotly in R
I have one data frame (matrix 13x11).You can see pic below 我有一个数据框(矩阵13x11)。您可以在下面看到图片
There are also data : 还有数据:
# Data
test_data_set<-structure(list(Name = c("Cars_sale_1", "Cars_sale_2", "Cars_sale_3",
"Cars_sale_4", "Cars_sale_5", "Cars_sale_6", "Cars_sale_7", "Cars_sale_8",
"Cars_sale_9", "Cars_sale_10", "Cars_sale_11", "Cars_sale_12",
"Cars_sale_13"), First = c(156300.824706096, 10006.2467099491,
3212.0722933848, 3319.03842779435, 9658.39620986138, 8434.32181084401,
1367.81891559923, 717.880329882435, 260.817687313564, 196.525706264257,
1042.98999824531, 7036.46253728724, 14974.7002155131), Second = c(227324.372696964,
16086.4713107563, 6318.58220740481, 21832.8829619231, 15740.5860677312,
10538.8313739252, 4399.92981224776, 2872.64432356554, 1391.68275135989,
0, 1979.57536409896, 12618.0733462011, 20694.7337436906), Third = c(277421.301982804,
18264.5376381821, 10922.6180031584, 30805.9659589402, 23327.3205825583,
14162.2038954203, 9179.99649061239, 5272.22319705212, 3019.19635023688,
0, 3587.71714335848, 17227.7241621337, 21867.2276106995), Fourth = c(307141.042288121,
27274.1182663625, 15141.1826636252, 51266.257238112, 25035.1289699947,
18876.8555886998, 13549.8859449026, 12045.9027899632, 4577.92595192139,
0, 9101.66695911564, 19369.2928583962, 30971.5263285415), Fifth = c(345904.895595719,
35406.3519915775, 21022.9163011055, 70233.5146516933, 28311.4932444288,
22832.3565537814, 21108.8261098438, 14801.7546938059, 4776.69766625724,
56.1502017897877, 11680.6457273206, 24203.544481488, 25989.4022630561
), Sixth = c(375676.013335673, 38199.2630286015, 34954.3428671697,
96511.528338305, 33332.4442884717, 27694.4025267591, 27706.1940691349,
26899.0349184067, 8709.73855062292, 224.600807159151, 16098.5436041411,
31910.4404281453, 32467.4847713049), Seventh = c(433176.346727496,
47455.623793648, 51832.251272153, 121340.024565713, 41695.1745920337,
31331.5318476926, 44969.8543604141, 24795.9291103702, 10157.0100017547,
828.215476399368, 27548.4120021056, 41680.0140375504, 35955.6910763933
), Eight = c(501520.687839972, 55052.4653447973, 74202.4916652044,
162651.693279523, 45550.4474469205, 40385.1903842779, 54554.132303913,
43609.6157220565, 16360.2035444815, 4171.95999298123, 45789.3665555361,
53713.5637831198, 29226.7897579876), Ninth = c(567436.251974031,
65858.0101772241, 104945.288647131, 238514.82716266, 60495.6659062993,
52381.4002456571, 100849.973679593, 61956.6941568696, 27927.4258641867,
4159.60694858747, 77211.5809791192, 69056.0449201614, 29472.1253015506
), Tenth = c(755730.057904896, 89047.2012633796, 208602.210914195,
544052.500438673, 195334.760484295, 129515.213195297, 220957.50131602,
119074.083172486, 115559.080540446, 36932.7952272328, 156449.622740832,
120385.751886296, 33197.0639513509)), row.names = c(NA, -13L), class = c("tbl_df",
"tbl", "data.frame"))
My intention is to make two graph bar plots in R like pics below with package Plotly, which are drawn in Excel. 我的意图是在R中制作两个图形条形图,如下面的Plotly包所示,它们是在Excel中绘制的。
How do you draw a stacked bar plot with the Plotly
package in R? 如何使用R中的
Plotly
包绘制堆叠的条形图?
The problem is that your rows and columns have to be exchanged. 问题是您的行和列必须交换。 Once it is done, you have to factor the order of First, Second etc in order for them to be printed in the right order
完成后,您必须考虑“第一”,“第二”等的顺序,以便它们以正确的顺序打印
library(plotly)
t_df <- data.frame(t(test_data_set[,-1]))
colnames(t_df) <- test_data_set$Name
t_df$Number <- factor(row.names(t_df),levels=row.names(t_df),ordered=TRUE)
p <- plot_ly(t_df, x = ~Number, y = ~Cars_sale_1, type = 'bar', name = 'Cars_sale_1') %>%
add_trace(y = ~Cars_sale_2, name = 'Cars_sale_2') %>%
add_trace(y = ~Cars_sale_3, name = 'Cars_sale_3') %>%
add_trace(y = ~Cars_sale_4, name = 'Cars_sale_4') %>%
add_trace(y = ~Cars_sale_5, name = 'Cars_sale_5') %>%
add_trace(y = ~Cars_sale_6, name = 'Cars_sale_6') %>%
add_trace(y = ~Cars_sale_7, name = 'Cars_sale_7') %>%
add_trace(y = ~Cars_sale_8, name = 'Cars_sale_8') %>%
add_trace(y = ~Cars_sale_9, name = 'Cars_sale_9') %>%
add_trace(y = ~Cars_sale_10, name = 'Cars_sale_10') %>%
add_trace(y = ~Cars_sale_11, name = 'Cars_sale_11') %>%
add_trace(y = ~Cars_sale_12, name = 'Cars_sale_12') %>%
add_trace(y = ~Cars_sale_13, name = 'Cars_sale_13') %>%
layout(yaxis = list(title = 'Count'), barmode = 'stack')
p
For the second graph I created a new dataframe where I make sure that every row has sum 1
对于第二张图,我创建了一个新的数据框,其中确保每一行的总和为1
t_df_pct <- t_df
t_df_pct[,1:(ncol(t_df)-1)] <- t_df_pct[,1:(ncol(t_df)-1)]/rowSums(t_df_pct[,1:(ncol(t_df)-1)])
p2 <- plot_ly(t_df_pct, x = ~Number, y = ~Cars_sale_1, type = 'bar', name = 'Cars_sale_1') %>%
add_trace(y = ~Cars_sale_2, name = 'Cars_sale_2') %>%
add_trace(y = ~Cars_sale_3, name = 'Cars_sale_2') %>%
add_trace(y = ~Cars_sale_4, name = 'Cars_sale_4') %>%
add_trace(y = ~Cars_sale_5, name = 'Cars_sale_5') %>%
add_trace(y = ~Cars_sale_6, name = 'Cars_sale_6') %>%
add_trace(y = ~Cars_sale_7, name = 'Cars_sale_7') %>%
add_trace(y = ~Cars_sale_8, name = 'Cars_sale_8') %>%
add_trace(y = ~Cars_sale_9, name = 'Cars_sale_9') %>%
add_trace(y = ~Cars_sale_10, name = 'Cars_sale_10') %>%
add_trace(y = ~Cars_sale_11, name = 'Cars_sale_11') %>%
add_trace(y = ~Cars_sale_12, name = 'Cars_sale_12') %>%
add_trace(y = ~Cars_sale_13, name = 'Cars_sale_13') %>%
layout(yaxis = list(title = 'Percentage'), barmode = 'stack')
p2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.