Global Accessibility Awareness Day 2026
Dr. Björn Fisseler
Barrierefrei sind […] Systeme der Informationverarbeitung, akustische und visuelle Informationsquellen […], wenn sie für Menschen mit Behinderungen in der allgemein üblichen Weise, ohne besondere Erschwernis und grundsätzlich ohne fremde Hilfe auffindbar, zugänglich und nutzbar sind. Hierbei ist die Nutzung behinderungsbedingt notwendiger Hilfsmittel zulässig. - §4 BGG (Hervorhebungen durch den Verfasser)
Barrierefreie Inhalte folgen dem POUR-Prinzip, d.h. sie sind …
Grundlegende Anforderungen und Strategien:
Um was für einen Bildinhalt handelt es sich, ist er
knitr-Codezellen: fig-altgraphics und ggplot2#| fig-cap: Zusammenhang von Flügelspannweite und Körpergewicht
#| fig-alt: Streudiagramm, betitelt mit Flügelspannweite versus Gewicht der Pinguine. Auf der X-Achse ist die Flügelspannweite abgetragen, von 170 bis 230 mm. Auf der Y-Achse ist ist das Körpergewicht abgetragen, von 3000 bis 6000 Gramm, in Abständen von 500 Gramm. Das Diagramm hat ungefähr 250 Einzelpunkte, die in einem Bereich von links unten nach rechts oben aufgetragen sind. Die Punkte für die drei Arten unterscheiden sich farblich, Rot für Adelie, Grün für Chinstrap und Blau für Gentoo. Die Punkte für die beiden Arten Adelie und Chinstrap konzentrieren sich im Bereich links unten bis ungefähr zur Mitte. Die Punkte für die Art Gentoo verteilt sich von der Mitte bis in die rechte obere Ecke.
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g, color = species)) ...Zusammenhang von Flügelspannweite und Körpergewicht
BrailleR erstellen?BrailleR erleichtert blinden Nutzenden die Arbeit mit RDescribe(): liefert nicht-kontextbezogene Informationen zu Grafikebenen eines PlotsVI(): extrahiert Details aus Plots oder anderen R-ObjektenA geom_point layer created with the ggplot2 framework
General Description:
A scatter plot shows the relationship between two variables by plotting a symbol for each observation at the coordinates for the two variables.
R hints:
A geom_point by default will by closed black dots. This can be changed with the `shape` parameter, while the size and colour can be changed with the `size` and `colour` parameter. These can be set to categorical variable to visually distinguish the groups
This chart has title 'Flügelspannweite vs. Gewicht der Pinguine'.
It has x-axis 'Flügelspannweite (mm)' with labels 170, 180, 190, 200, 210, 220 and 230.
It has y-axis 'Gewicht (g)' with labels 3000, 4000, 5000 and 6000.
There is a legend indicating colour is used to show Pinguinarten, with 3 levels:
Adelie shown as strong reddish orange colour,
Chinstrap shown as vivid yellowish green colour and
Gentoo shown as brilliant blue colour.
The chart is a set of 342 big solid circle points of which about 85% can be seen.
It has size set to 3.
ellmer-Package für die Verbindung zum LLMellmer laden
#| fig-alt: !expr ggplot2::get_alt_text(ggplot2_ai_alt)
1library(ellmer)
generate_alt_text = function(ggplot_obj) {
2 temp = tempdir()
save_path = file.path(temp, "temp.png")
ggsave (save_path, ggplot_obj)
3 alt_text_chat <- chat_openai_compatible(
base_url = "https://api.yourllm.de/v1",
credentials = function(){Sys.getenv("YOUR_API_KEY")},
model = multimodal_model
)
4 alt_Text = alt_text_chat$chat("Erzeuge einen kurzen und aussagekräftigen Alternativtext für das Diagramm für Menschen, die das Bild nicht sehen können. Beginne sofort mit dem Alt-Text ohne Text wie 'Alt-Text:' oder 'Beschreibung:' davor. Der Alt-Text soll zuerst den Diagrammtyp und die auf den Achsen aufgetragenen Variablen wiedergeben. Danach beschreibst du kurz und prägnant die wichtigsten in den Daten erkennbaren Muster oder Trends. Achte darauf, alle Wertebereiche in die Darstellung aufzunehmen, je genauer desto besser.", content_image_file(save_path), echo = "none")
alt_Text <- trimws(gsub('[\'"„“‘’]', '', as.character(alt_Text)))
}ellmer laden
6#| fig-alt: !expr ggplot2::get_alt_text(ggplot2_ai_alt)
1library(ellmer)
generate_alt_text = function(ggplot_obj) {
2 temp = tempdir()
save_path = file.path(temp, "temp.png")
ggsave (save_path, ggplot_obj)
3 alt_text_chat <- chat_openai_compatible(
base_url = "https://api.yourllm.de/v1",
credentials = function(){Sys.getenv("YOUR_API_KEY")},
model = multimodal_model
)
4 alt_Text = alt_text_chat$chat("Erzeuge einen kurzen und aussagekräftigen Alternativtext für das Diagramm für Menschen, die das Bild nicht sehen können. Beginne sofort mit dem Alt-Text ohne Text wie 'Alt-Text:' oder 'Beschreibung:' davor. Der Alt-Text soll zuerst den Diagrammtyp und die auf den Achsen aufgetragenen Variablen wiedergeben. Danach beschreibst du kurz und prägnant die wichtigsten in den Daten erkennbaren Muster oder Trends. Achte darauf, alle Wertebereiche in die Darstellung aufzunehmen, je genauer desto besser.", content_image_file(save_path), echo = "none")
alt_Text <- trimws(gsub('[\'"„“‘’]', '', as.character(alt_Text)))
}
5new_alt_text <- generate_alt_text(ggplot2_cc_alt)
ggplot2_ai_alt <- ggplot2_cc_alt + labs(alt = new_alt_text)
ggplot2_ai_altellmer laden
ggplot2::labs() anhängen
Der Alternativtext, den das LLM erzeugt hat:
Streudiagramm mit dem Titel Flügelspannweite vs. Gewicht der Pinguine. Die horizontale Achse stellt die Flügelspannweite in Millimetern (170 bis 230) und die vertikale Achse das Gewicht in Gramm (3000 bis 6000) dar. Drei Pinguinarten werden farbcodiert unterschieden: Adelie (rot), Chinstrap (grün) und Gentoo (blau). Es zeigt sich ein klarer positiver Trend, bei dem sowohl Spannweite als auch Gewicht zusammenhängen. Adelie-Pinguine haben die kleinsten Maße (ca. 170–200 mm Spannweite, 3100–4500 g), gefolgt von den Chinstrap-Pinguinen (ca. 180–210 mm Spannweite, 2800–4600 g). Die Gentoo-Pinguine liegen am höchsten mit einer Spannweite von 210 bis 230 mm und einem Gewicht von 4000 bis über 6000 g.
Welche Anforderungen werden nicht erfüllt?
ggplot2 nutzenviridis, colorBlindness oder RColorBrewer nutzenggthemes sind abgekündigtggpattern für Füllung mit Mustern nutzenggplot_a11y <- ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g, shape = species, color = species)) +
geom_point(size = 3) + # Punktcharakter und Größe einstellen
labs(title = "Flügelspannweite vs. Gewicht der Pinguine",
x = "Flügelspannweite (mm)",
y = "Gewicht (g)",
color = "Pinguinarten",
shape = "Pinguinarten") +
theme_minimal() +
scale_color_brewer(palette = "Dark2")
ggplot_a11yZusammenhang von Flügelspannweite und Körpergewicht
<caption> verfügbar<th> ausgezeichnet, alternativ über ARIA-Rollenscope-Attribut oder per headers/id-Kombinationen<thead> und <tfoot> ausgezeichnet werden<summary>-Element darf in HTML5 nicht mehr genutzt werdenWie gut erfüllten die Pakete flextable, gt, huxtable und kableExtra diese Anforderungen?
| Penguins dataset | |||||||
| species | island | bill_length_mm | bill_depth_mm | flipper_length_mm | body_mass_g | sex | year |
|---|---|---|---|---|---|---|---|
| Adelie | Torgersen | 39.1 | 18.7 | 181 | 3750 | male | 2007 |
| Adelie | Torgersen | 39.5 | 17.4 | 186 | 3800 | female | 2007 |
| Adelie | Torgersen | 40.3 | 18.0 | 195 | 3250 | female | 2007 |
| Adelie | Torgersen | NA | NA | NA | NA | NA | 2007 |
| Adelie | Torgersen | 36.7 | 19.3 | 193 | 3450 | female | 2007 |
| Adelie | Torgersen | 39.3 | 20.6 | 190 | 3650 | male | 2007 |
| Adelie | Torgersen | 38.9 | 17.8 | 181 | 3625 | female | 2007 |
| Adelie | Torgersen | 39.2 | 19.6 | 195 | 4675 | male | 2007 |
| Adelie | Torgersen | 34.1 | 18.1 | 193 | 3475 | NA | 2007 |
| Adelie | Torgersen | 42.0 | 20.2 | 190 | 4250 | NA | 2007 |
| Bill and Flipper compared by Species and Island | |||||||
bill
|
flipper
|
||||||
|---|---|---|---|---|---|---|---|
| Species | Island |
length
|
depth
|
length
|
|||
| avg | sd | avg | sd | avg | sd | ||
| Adelie | Biscoe | 38.97500 | 2.480916 | 18.37045 | 1.1888199 | 188.7955 | 6.729247 |
| Adelie | Dream | 38.50179 | 2.465359 | 18.25179 | 1.1336171 | 189.7321 | 6.585083 |
| Adelie | Torgersen | 38.95098 | 3.025318 | 18.42941 | 1.3394468 | 191.1961 | 6.232238 |
| Chinstrap | Dream | 48.83382 | 3.339256 | 18.42059 | 1.1353951 | 195.8235 | 7.131894 |
| Gentoo | Biscoe | 47.50488 | 3.081857 | 14.98211 | 0.9812198 | 217.1870 | 6.484976 |
| Kriterium | Flextable | GT | Huxtable | kableExtra |
|---|---|---|---|---|
| H51: Using table markup (table, tr, th, td) | J | J | J | J |
| H39: Using caption element | N | J | J | J |
| H63: Using the scope attribut | N | J | N | N |
| H43: Using id/headers attributes | N | J | N | N |
| Irregular headers marked via col, colgroup, colspan, rowspan | J | J | J | J |
| thead/tfoot only once per table | J | J | J | J |
Empfehlung für Datentabellen: gt
| Vergleich von Flügellänge und Körpergewicht | ||||
body
|
||||
|---|---|---|---|---|
flipper
|
mass
|
|||
| Spezies |
length
|
g
|
||
| avg | sd | avg | sd | |
| Adelie | 189.9536 | 6.539457 | 3700.662 | 458.5661 |
| Chinstrap | 195.8235 | 7.131894 | 3733.088 | 384.3351 |
| Gentoo | 217.1870 | 6.484976 | 5076.016 | 504.1162 |
$ und $$$a^2 + b^2 = c^2$ innerhalb einer Zeile: \(a^2 + b^2 = c^2\)$$ in einem eigenen Absatz: \[a^2 + b^2 = c^2\]Wichtig: Eine automatische Prüfung allein ist nicht ausreichend!
make für die einfache Erstellung von AusgabedokumentenMachen Sie den “shift left” und berücksichtigen Sie die Barrierefreiheit von Anfang an!
gt-Package erstellenQuarto ist noch nicht perfekt, aber es wird fortlaufend daran gearbeitet.
Ich freue mich auf Ihre Fragen und Anregungen!
Barrierefreie Reports und Dokumente mit Quarto