Das Diagramm sieht bei 7 Einträgen in der Liste in Ordnung aus. Wenn sich aber die Anzahl der Einträge ändert bleibt die Breite des Diagramms gleich. Wie kann ich die Breite variabel machen?

Code, hier editierbar zum Übersetzen:
% \RequirePackage{filecontents} % evtl. brauchbar
\begin{filecontents}{data.csv}
Nr, Name, Vorname, Stimmen
1, Name1, Vorname1, 13
2, Name2, Vorname2, 36
3, Name3, Vorname3, 15
4, Name4, Vorname4, 13
5, Name5, Vorname5, 6
6, Name6, Vorname6, 12
7, Name7, Vorname7, 25
\end{filecontents}
\documentclass[tikz]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.16}
\makeatletter
\pgfplotsset{
/pgfplots/flexible xticklabels from table/.code n args={3}{%
\pgfplotstableread[#3]{#1}\coordinate@table
\pgfplotstablegetcolumn{#2}\of{\coordinate@table}\to\pgfplots@xticklabels
\let\pgfplots@xticklabel=\pgfplots@user@ticklabel@list@x
}
}
\makeatother
\newcommand{\saeulendiagramm}[1]{
\begin{tikzpicture}
\begin{axis}[
ybar,
xtick=data,
ymajorgrids=true,
bar width=0.7cm,
xtick align=inside,
ylabel={Stimmen},
flexible xticklabels from table={#1}{Name}{col sep=comma},
x tick label style={font=\normalsize, rotate=45, anchor=east}
]
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

gefragt 13 Mai '19, 15:47

vince6e74's gravatar image

vince6e74
3148
Akzeptiert-Rate: 0%

bearbeitet 13 Jun '21, 20:28

saputello's gravatar image

saputello
11.1k174365

PS: Dein Edit war nicht nötig. Mit filecontents war schon goldrichtig! Zum Problem - Morgen mal schauen (falls niemand schneller ist).

(14 Mai '19, 00:44) cis

Die Breite des plots ist mit width änderbar, z.B. \begin{axis}[width=10cm,....

(15 Mai '19, 03:22) Community

@Murmeltier Das Festlegen einer absoluten Breite entspricht meiner 'alten AW'. Da er das automatisch haben will, hatte ich die width abhängig von der Zeilenzahl der Tabelle berechnen lassen. Aber m.E. reicht bereits das Angeben eines Maßstabs ('x=1.5' / 'x=9mm'), um eine automatische Anpassung zu erreichen.

(15 Mai '19, 13:45) cis

Neue Antwort:

Du musst scheints einfach den x-Maßstab anpassen, dann verbreitert sich das Diagramm automatisch:
x=9mm, %bar width =0.9 % 7mm % optional

alt text

Ich finde das Auslesen der Zeilenanzahl usw. allerdings spaßiger....

Alte Antwort:

Das ist in der Tat ein interessanter Effekt, ob das wohl Absicht ist?

Bekanntlich lässt sich die absolute Breite des pgfplots-Graphen festlegen (width=10cm).

Also könntest Du die Zeilenzahl auslesen und ggf. noch einen Streckfaktor ergänzen und damit die absolute Breite des jeweiligen Graphen festlegen

\pgfplotstablegetrowsof{\jobname-data.csv} \pgfmathsetmacro{\Breite}{1.2*(\pgfplotsretval-1)} % Zeilenzahl x Streckfaktor % DAMIT: \saeulendiagramm[width=\Breite cm, %bar width=5mm, % optional title={Neu (width=\Breite cm):}]{\jobname-data.csv}

alt text

Hinweise:
·Vielleicht ist es noch sinnvoll eine height=7cm festzulegen, für einheitliche Höhe, aber verschiedene Breite.
·Soll es ganz automatisch laufen, muss ggf. etwas getan werden, dass die \textwidth nicht überschritten wird.

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\RequirePackage{filecontents} % evtl. brauchbar
\begin{filecontents*}{\jobname-data.csv}
Nr, Name, Vorname, Stimmen
1, Name1, Vorname1, 13
2, Name2, Vorname2, 36
3, Name3, Vorname3, 15
4, Name4, Vorname4, 13
5, Name5, Vorname5, 6
6, Name6, Vorname6, 12
7, Name7, Vorname7, 25
8, Name7, Vorname7, 26
9, Name7, Vorname7, 27
10, Name7, Vorname7, 28
11, Name7, Vorname7, 29
12, Name7, Vorname7, 30
\end{filecontents*}
%\documentclass[]{article}
\documentclass[tikz]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.16}
\makeatletter
\pgfplotsset{
/pgfplots/flexible xticklabels from table/.code n args={3}{%
\pgfplotstableread[#3]{#1}\coordinate@table
\pgfplotstablegetcolumn{#2}\of{\coordinate@table}\to\pgfplots@xticklabels
\let\pgfplots@xticklabel=\pgfplots@user@ticklabel@list@x
}
}
\makeatother
\newcommand{\saeulendiagramm}[2][]{
\begin{tikzpicture}
\begin{axis}[
ybar,% ybar interval=0.7, xmin=0,
xtick=data,
ymajorgrids=true,
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 14 Mai '19, 13:59

cis's gravatar image

cis
9.6k104461491
Akzeptiert-Rate: 29%

bearbeitet 14 Mai '19, 19:59

Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×298
×54
×39

gestellte Frage: 13 Mai '19, 15:47

Frage wurde gesehen: 5,672 Mal

zuletzt geändert: 15 Mai '19, 13:46

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×