Ich verwende rcdimple
, um eine Reihe von facettierten Barplots basierend auf einer kategorischen Spalte zu erstellen. Die Plots kommen wie erwartet heraus, aber ich kann nicht herausfinden, wie man ein Label auf jeden Subplot anwendet.rcdimple facet function subplot Etiketten
Im Beispiel unten Ich habe Ich habe einige Optionen kommentiert ausprobiert:
fake.data <- read.table(sep=',', header=T, text="
category,variable,value,count
A Category,SITE.ACTIVITIES,1,51
A Category,SITE.ACTIVITIES,2,116
A Category,SITE.ACTIVITIES,3,46
A Category,PROXIMITY.TO.RECEPTORS,1,17
A Category,PROXIMITY.TO.RECEPTORS,2,111
A Category,PROXIMITY.TO.RECEPTORS,3,93
All Others,SITE.ACTIVITIES,1,60
All Others,SITE.ACTIVITIES,2,37
All Others,SITE.ACTIVITIES,3,54
All Others,PROXIMITY.TO.RECEPTORS,1,80
All Others,PROXIMITY.TO.RECEPTORS,2,167
All Others,PROXIMITY.TO.RECEPTORS,3,120
")
plt <- fake.data %>%
dimple(x ="value", y = "count",
#title = c('A Category','All Others'),
groups = 'category', type = "bar",
width = 900, height = 220) %>%
facet('variable',
#title = c('A Category','All Others'),
removeAxes = T) %>%
default_colors(c('blue','grey')) %>%
xAxis(type = "addCategoryAxis",
#facet.title = c('A Category','All Others'),
orderRule = "value") %>%
yAxis(overrideMax=300, ticks=4) %>%
add_legend() %>%
add_title(text = c('A Category','All Others'))
Nach Abbildung 2.14 in this Blog-Post zu sehen, ich folgendes hinzugefügt:
plt$x$options$tasks <- list(htmlwidgets::JS('
function(){
//this.widgetDimple should hold our chart
var chart1 = this.widgetDimple[0];
var chart2 = this.widgetDimple[1];
chart1.svg.append("text")
.attr("x", chart1.axes[0]._scale(3))
.attr("y", chart1.axes[1]._scale(300))
.attr("text-anchor", "middle")
.text("A Category")
chart2.svg.append("text")
.attr("x", chart2.axes[0]._scale(3))
.attr("y", chart2.axes[1]._scale(300))
.attr("dy", "0.6em")
.attr("text-anchor", "middle")
.text("All Others")
}
'))
plt
Ich denke, ich bin auf dem richtigen Weg, denke aber, es gibt wahrscheinlich eine sauberere Möglichkeit, dies zu tun (tut mir leid, mein Javascript ist nicht so toll).