2015-08-30 2 views
0

Я использую multiBarHorizontalChart с nplot(), чтобы показать отклонение от средней скорости. У меня есть полосы «отрицательного изменения», выделенные красным цветом и положительные полосы изменения ставок в зеленом цвете - путем группировки переменной «поснег». Однако, когда я группирую эту переменную, годы на оси y больше не упорядочены. Любая идея, как я мог бы поддерживать порядок лет, все еще группируя эту переменную? Лично я считаю, что разница в цвета делает диаграмму намного легче интерпретировать. Вот воспроизводимый пример, используя данные, размещенные на Сократе:Упорядочить nplot() по значениям оси y

install.packages("RSocrata") 
library(RSocrata) 

url="https://opendata.socrata.com/dataset/Preliminary-Data-Data-Visulaization-Project-8-12-1/4xgc-ygke" 

dfRatePer100= read.socrata(url) 

dfRatePer100=subset(dfRatePer100, select=c(1,3), Year!="NA") 

colnames(dfRatePer100)= c("Year", "Dollar.Rate") 

dfRatePer100$Dollar.Rate= as.numeric(dfRatePer100$Dollar.Rate, 3) 
dfRatePer100$mean= mean(dfRatePer100$Dollar.Rate) 

dfRatePer100=dfRatePer100%>% 
    mutate(rateVariance= Dollar.Rate - mean) %>% 
    arrange(desc(Year)) 

dfRatePer100$PosNeg=ifelse(dfRatePer100$rateVariance>0, "Positive rate change from mean", ifelse(dfRatePer100$rateVariance<0, "Negative rate change from mean", "No change from mean")) 

ratePer100 <- nPlot(rateVariance~ Year, group="PosNeg",data =  dfRatePer100,type = 'multiBarHorizontalChart') 
ratePer100$chart(showLegend=T) 
ratePer100$chart(showControls=F) 
ratePer100$chart(color = c('green','red')) 
ratePer100$yAxis(axisLabel='Variance from mean rate (in dollars)') 
ratePer100$yAxis(tickFormat = "#! function(d) {return d3.format('.2f')(d)} !#") 
ratePer100$set(width=600) 
ratePer100 

Я ценю любую помощь! Благодарю.

ответ

0

Не ответ, а предложение, так как, глядя на исходный код, nvd3multiBarHorizontalChart будет группироваться по группам сначала и сортировать по значениям, поэтому не думаю, что это возможно. taucharts может быть хорошим вариантом, если rCharts не является обязательным требованием.

library(rCharts) 

df <- data.frame(
    year = as.character(2000:2012) 
    ,value = runif(13,-1,1) 
) 
df$group <- ifelse(df$value>0,"positive","negative") 

np <-nPlot(
    value ~ year, 
    group = "group", 
    data = df, 
    type = 'multiBarHorizontalChart' 
) 
np$chart(color = c('green','red')) 
np 

library(taucharts) 
tauchart(df) %>% 
    tau_bar("value", "year", "group", horizontal=TRUE) %>% 
    tau_legend() 
+0

Спасибо за тонну своевременного портфеля! Rcharts не является обязательным требованием, мне просто нужно сохранить график как html-файл в моем скрипте (аналогично nfdd's df $ save()), а не вручную щелкнуть «export to html» в R Studio. Вы знаете, возможно ли это? , –

+0

'htmlwidgets :: saveWidget' должен экспортировать красиво – timelyportfolio

+0

Perfect. Любой способ контролировать размер выведенного графика? Благодаря тонну. –

Смежные вопросы