viewof M2_plot = vl
.markBar({
stroke: "white",
strokeWidth: 0.5
})
.data(filteredData)
.transform(
vl
.calculate(
"indexof([ 'Gas', 'Wasserstoff', 'Hybrid', 'PlugIn-Hybrid', 'Elektrisch', 'Andere'], datum.Variable)"
)
.as("stackSortOrder")
)
.encode(
vl
.y()
.fieldQ("Wert")
.title(null)
.axis({ format: M2_radiosUnit == units[1] ? "%" : null })
.scale({
domain:
M2_radiosUnit == units[1] && M2_checkboxes.length == 1
? [0, 0.25]
: null
})
.stack(
M2_radiosUnit == units[1] && M2_checkboxes.length == 0
? "normalize"
: "zero"
),
vl
.x()
.field("Jahr")
.axis({
grid: false,
domain: true,
labelPadding: 8,
zindex: 1
})
.title(null),
vl
.color({ title: "Antriebsart" })
.field("Variable")
.scale(colorAntriebsart),
vl.order("stackSortOrder"),
vl.tooltip([
{ field: "Jahr", title: "Jahr" },
{ field: "Variable", title: "Antriebsart" },
{ field: "Wert_txt", title: "Bestand" }
]),
vl.facet({
field: "Gruppe",
type: "nominal",
columns: 1,
spacing: 50,
title: null
})
)
.resolve({
scale: {
y: "independent"
},
axis: { x: "independent" }
})
.width(plotWidth(1)) // specifying responsive width
.height(350)
// .title({
// text:
// [...new Set(data.map((d) => d.Indikator_Name))] +
// ", " +
// gebiet[1] +
// " und " +
// gebiet[0],
// subtitle: "In " + M2_radiosUnit
// })
.autosize({ resize: true, type: "fit" })
.config({
view: { stroke: null },
locale: { number: localeNumber, time: localeTime },
scale: { bandPaddingInner: 0.2, bandPaddingOuter: 0.2, stroke: 2 },
background: "#ffffff",
axis: {
labelFont: "HelveticaNowRegular,Helvetica,sans-serif",
labelFontSize: 14,
labelColor: "black",
titleFont: "HelveticaNowRegular,Helvetica,sans-serif",
titleFontSize: 14,
titleFontColor: "black"
},
axisX: {
tickCount: Math.ceil(width / 120),
grid: false,
domainColor: "lightgrey",
tickColor: "lightgrey",
labelAngle: 0,
zindex: 1
},
axisY: {
labelPadding: 10,
titleAlign: "left",
titleAngle: 0,
titleX: 0,
titleY: -20,
tickCount: Math.ceil(height / 120),
ticks: true,
tickSize: 10,
tickColor: "lightgrey",
domain: false,
domainColor: "lightgrey",
gridColor: "lightgrey",
labelLimit: 300
},
title: {
font: "HelveticaNowBlack,Arial Black,Helvetica,sans-serif",
fontSize: 20,
offset: 15,
anchor: "start",
lineHeight: 5,
padding: 40,
subtitleFont: "HelveticaNowRegular,Helvetica,sans-serif",
subtitleFontSize: 18
},
header: {
labelOrient: "top",
labelPadding: 40,
lineHeight: 5,
labelFontSize: 16,
labelFont: "HelveticaNowBlack,Arial Black,Helvetica,sans-serif",
labelColor: "black",
labelAnchor: "start",
titleFont: "HelveticaNowBlack,Arial Black,Helvetica,sans-serif",
titleAnchor: "start",
titleColor: "black",
titleFontSize: 16
},
legend: {
disable: true,
orient: "top",
symbolSize: 250,
titleFont: "HelveticaNowBlack,Arial Black,Helvetica,sans-serif",
titleFontSize: 14,
labelFont: "HelveticaNowRegular,Helvetica,sans-serif",
labelFontSize: 14,
labelColor: "black",
labelLimit: 300,
columns: nCol, // responsive legend width
padding: 10
},
text: {
font: "HelveticaNowRegular,Helvetica,sans-serif",
fontSize: 14,
color: "black"
}
})
.render()