我想使用nPlot()
中的RCharts
函数来绘制落入离散组而不是频率的人的百分比。
例如:使用下面的HairEyeColor数据/代码,我可以考虑具有不同染发颜色(我的分组变量)的人的百分比,作为其眼睛颜色的函数。
## server.r
library(rCharts)
library(shiny)
library(reshape)
HairEyeColor1 <- melt(round(prop.table(HairEyeColor[,,1],2)*100,2))
names(HairEyeColor1) <- c("Hair", "Eye", "Percent")
shinyServer(function(input, output) {
output$myChart <- renderChart({
p1 <- nPlot(Percent ~ Eye, group = "Hair", data = HairEyeColor1, type = multiBarChart")
p1$addParams(dom = 'myChart')
return(p1)
})
})
## ui.R
library(rCharts)
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("rCharts: Interactive Charts from R using NVD3.js"),
sidebarPanel(
wellPanel(
helpText( "Look at the pretty graph"
)
),
wellPanel(
helpText( "Look at the pretty graph"
)
),
wellPanel(
helpText( "Look at the pretty graph"
)
)
),
mainPanel(
div(class='wrapper',
tags$style(".Nvd3{ height: 400px;}"),
showOutput("myChart","Nvd3")
)
)
))
说我只是想看一个像Hair这样的因素。有没有办法用nPlot()
绘制百分比?
prop.table(rowSums(HairEyeColor[,,1]))
Black Brown Red Blond
0.2007168 0.5125448 0.1218638 0.1648746
type=multiBarChart
我尝试过:
p1 <- nPlot(Percent ~ , group = "Hair", data = HairEyeColor1, type = multiBarChart")
这完全失败了。我也尝试过:
p1 <- nPlot(Percent ~ 1, group = "Hair", data = HairEyeColor1, type = multiBarChart")
这至少会将一些图表传递给Shiny UI。但这看起来很丑陋和功能(X / Y轴的外观,点击图表)都丢失了。
我认为这适用于nPlot(type=discreteBarChart)
但是数据布局似乎需要一个带有单个因子变量的数据框。所以我不太明白如何欺骗nPlot(type=discreteBarChart)
来获取比例/百分比的向量。
任何建议表示赞赏。
答案 0 :(得分:2)
以下是nPlot
的使用方法。您可以看到结果图here。如果要在默认情况下堆叠条形,请在打印图表之前添加行n1$chart(stacked = TRUE)
。
# prepare data
require(plyr)
dat = as.data.frame(HairEyeColor)
dat = ddply(dat, .(Hair), summarize, Freq = sum(Freq), Group = "A")
# draw chart
require(rCharts)
n1 <- nPlot(Freq ~ Group, data = dat, group = 'Hair', type = 'multiBarChart')
n1