R - 用rChart和堆积条形图(百分比)

时间:2014-07-24 11:04:36

标签: r plot rcharts

我已经尝试了几天的图表但没有成功,我们将非常感谢您的帮助。

我试图复制几个例子,尤其是来自here的这个例子

haireye <- subset(as.data.frame(HairEyeColor), Sex == "Male")
n1 <- nPlot(Freq ~ Eye, group = 'Hair', data = haireye, type = 'multiBarChart')
n1$chart(stacked = TRUE, forceY = 120)

我想要获得的结果基本上是this one

这是我的代码:

graficaOccorrenzeContrattiPagamenti = function(tabellaDati) {
require(plyr)
tabellaDatiMelt = melt(tabellaDati, id = c('Regione','Pagamento'))
risultato = tabellaDatiMelt[order(tabellaDatiMelt$value,decreasing = TRUE, na.last=NA),]
grafico <- nPlot( value ~ Regione, group = 'Pagamento', data = risultato, type = 'multiBarChart')
grafico$xAxis(rotateLabels = -45)
grafico$set(reduceXTicks = FALSE)
grafico$chart(stacked = TRUE)
return(grafico)
}

这些是&#34; risultato&#34;中的值。传递给nplot:

                 Regione  Pagamento variable value
12                VENETO Bollettino   Valore  1299
31                VENETO   Bonifico   Valore    13
51                VENETO        RID   Valore   969
60                VENETO      Vuoto   Valore    25
21         VALLE D'AOSTA Bollettino   Valore     1
69         VALLE D'AOSTA      Vuoto   Valore     0
70         VALLE D'AOSTA   Bonifico   Valore     0
71         VALLE D'AOSTA        RID   Valore     0
1                 UMBRIA Bollettino   Valore   774
22                UMBRIA   Bonifico   Valore     6
34                UMBRIA        RID   Valore   161
72                UMBRIA      Vuoto   Valore     0
20   TRENTINO ALTO ADIGE Bollettino   Valore    47
53   TRENTINO ALTO ADIGE        RID   Valore    22
73   TRENTINO ALTO ADIGE      Vuoto   Valore     0
74   TRENTINO ALTO ADIGE   Bonifico   Valore     0
2                TOSCANA Bollettino   Valore  1475
28               TOSCANA   Bonifico   Valore     5
35               TOSCANA        RID   Valore   399
59               TOSCANA      Vuoto   Valore     9
7                SICILIA Bollettino   Valore 18089
29               SICILIA   Bonifico   Valore    11
38               SICILIA        RID   Valore   462
57               SICILIA      Vuoto   Valore    40
16              SARDEGNA Bollettino   Valore    23
49              SARDEGNA        RID   Valore     2
75              SARDEGNA      Vuoto   Valore     0
76              SARDEGNA   Bonifico   Valore     0
3                 PUGLIA Bollettino   Valore  6258
27                PUGLIA   Bonifico   Valore     3
40                PUGLIA        RID   Valore   382
66                PUGLIA      Vuoto   Valore     2
14              PIEMONTE Bollettino   Valore  1005
33              PIEMONTE   Bonifico   Valore     1
43              PIEMONTE        RID   Valore   480
63              PIEMONTE      Vuoto   Valore     4
18                  NULL Bollettino   Valore   250
48                  NULL        RID   Valore    15
77                  NULL      Vuoto   Valore     0
78                  NULL   Bonifico   Valore     0
8                 MOLISE Bollettino   Valore  3283
45                MOLISE        RID   Valore   136
55                MOLISE      Vuoto   Valore     3
79                MOLISE   Bonifico   Valore     0
4                 MARCHE Bollettino   Valore   195
36                MARCHE        RID   Valore    74
80                MARCHE      Vuoto   Valore     0
81                MARCHE   Bonifico   Valore     0
11             LOMBARDIA Bollettino   Valore  2395
24             LOMBARDIA   Bonifico   Valore    33
42             LOMBARDIA        RID   Valore   692
64             LOMBARDIA      Vuoto   Valore     5
15               LIGURIA Bollettino   Valore    88
47               LIGURIA        RID   Valore    29
62               LIGURIA      Vuoto   Valore     2
82               LIGURIA   Bonifico   Valore     0
5                  LAZIO Bollettino   Valore 12344
23                 LAZIO   Bonifico   Valore    37
37                 LAZIO        RID   Valore   468
56                 LAZIO      Vuoto   Valore    10
19 FRIULI VENEZIA GIULIA Bollettino   Valore   937
52 FRIULI VENEZIA GIULIA        RID   Valore   682
61 FRIULI VENEZIA GIULIA      Vuoto   Valore    12
83 FRIULI VENEZIA GIULIA   Bonifico   Valore     0
17        EMILIA ROMAGNA Bollettino   Valore   442
32        EMILIA ROMAGNA   Bonifico   Valore     1
50        EMILIA ROMAGNA        RID   Valore   123
68        EMILIA ROMAGNA      Vuoto   Valore     2
6               CAMPANIA Bollettino   Valore  6099
25              CAMPANIA   Bonifico   Valore    66
39              CAMPANIA        RID   Valore   204
65              CAMPANIA      Vuoto   Valore    36
13              CALABRIA Bollettino   Valore 13117
30              CALABRIA   Bonifico   Valore     6
41              CALABRIA        RID   Valore   501
54              CALABRIA      Vuoto   Valore    18
10            BASILICATA Bollettino   Valore   989
26            BASILICATA   Bonifico   Valore     4
44            BASILICATA        RID   Valore    44
67            BASILICATA      Vuoto   Valore     3
9                ABRUZZO Bollettino   Valore  1958
46               ABRUZZO        RID   Valore    45
58               ABRUZZO      Vuoto   Valore     3
84               ABRUZZO   Bonifico   Valore     0 

我也尝试删除&#34;变量&#34;列,以防它可能会导致一些prbolem但无济于事。 hPlot,dPlot,uPlot,mPlot也没有成功。 如果我写了一些明确的废话,请尽可能清楚,因为我对R语言很陌生,并且仍在努力理解整个事情是如何运作的。

2 个答案:

答案 0 :(得分:2)

以下是使用nPlot获取您感兴趣的地图的一种方法。基本思路是在绘制数据之前对其进行转换,这样除了Freq列之外,您还有百分比。

library(plyr); library(rCharts)
haireye <- subset(as.data.frame(HairEyeColor), Sex == "Male")
haireye <- ddply(haireye, .(Eye), transform, Perc = Freq/sum(Freq)*100)
n1 <- nPlot(Freq ~ Eye, group = 'Hair', data = haireye, type = 'multiBarChart')
n1$chart(stacked = TRUE, forceY = 120)
n1

以下是您可以在线玩的interactive version代码。

答案 1 :(得分:1)

您可以使用像这样的凹坑库:

d1 = dPlot(y = "Regione", x = "value",data = risultato, groups = "Pagamento",type = "bar") 
d1$yAxis(type = "addCategoryAxis", orderRule = "Regione")
d1$xAxis(type = "addPctAxis") 
d1$legend(
  x = 0,
  y = 0,
  width = 500,
  height = 75,
  horizontalAlign = "right"
)
d1

您可以使用rCharts here

找到许多示例