Farbskalierung in Tabelle nach Werten

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Farbskalierung in Tabelle nach Werten

von CollmDante » So 22. Mai 2016, 18:21

Danke das hat mir sehr geholfen.
Ich werde deinen Vorschlag verwenden. Jetzt muss ich meine Farbnormierung nur noch anpassen und dann ist alles rund.

Gruß Jens

von u_fischer » Sa 21. Mai 2016, 16:28

Du könntest die Farbdefinition in einem Befehl speichern. Wenn der global ist, kannst du die Berechnung am Ende der vorigen Zelle machen:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[table]{xcolor}
\usepackage{fp,fp-upn}
\usepackage{collcell}
\begin{document}
\newcommand{\twavecolorinit}[5]{ %Initialisierung für Farbskala nach Werten
 \FPset\amin{#1}% Minimalwert
 \FPset\amax{#2}% Maximalwert
 \FPupn\am{\amax{} \amin{} add 2 div} %Mittelwertberechnung
 \newcommand*{\basecolora}{#3} %Farbe für amin
 \newcommand*{\basecolorb}{#4} %Farbe für am
 \newcommand*{\basecolorc}{#5} %Farbe für amax
 }
 \twavecolorinit{-50}{50}{red}{green}{blue}
% Berechnung des Farbwertes als Test
\FPset\tw{20}
 \FPiflt\tw\am%
   \FPupn{tg}{\tw{} \am{} sub \am{} \amin{} sub div -100 mul}
   \FPset\tr{0}
   \FPupn{ty}{100 \tg{} sub}
   \colorlet{ca}{\basecolora!\tg!\basecolorc!\ty!}%
  \else%
   \FPupn{tr}{\tw{} \am{} sub \am{} \amin{} sub div -100 neg mul}
   \FPset\tg{0}
   \FPupn{ty}{100 \tr{} sub}
   \colorlet{ca}{\basecolorb!\tr!\basecolorc!\ty!}
  \fi

\newcommand{\settbcolor}[1]{\FPset\tw{#1}
 \FPiflt\tw\am%
   \FPupn{tg}{\tw{} \am{} sub \am{} \amin{} sub div -100 mul}
   \FPset\tr{0}
   \FPupn{ty}{100 \tg{} sub}
   \xdef\mycolor{\basecolora!\tg!\basecolorc!\ty!}%
  \else%
   \FPupn{tr}{\tw{} \am{} sub \am{} \amin{} sub div -100 neg mul}
   \FPset\tg{0}
   \FPupn{ty}{100 \tr{} sub}
   \xdef\mycolor{\basecolorb!\tr!\basecolorc!\ty!}%
  \fi }

\begin{tabular}{lll}
\cellcolor{ca}20\settbcolor{-45}&\cellcolor{\mycolor}-20&Test\settbcolor{-30}\\
\cellcolor{\mycolor}lblb
\end{tabular}
\end{document}

von CollmDante » Sa 21. Mai 2016, 08:26

Danke für die Antwort, da die Werte jedoch sehr verschieden sind (liegen zwischen 0 und 3) und die Tabelle sehr groß, benötige ich einen Befehl der in der Tabelle nach dem Wert die Zellfarbe steuert. Wie würde das mit einem neuen farbschema funktionieren?

von Gast » Do 19. Mai 2016, 16:13

Mit dem \settbcolor wird die Zelle bereits begonnen (auch wenn das nichts ausgibt). Das \cellcolor steht also nicht mehr vor, sondern bereits in der Zelle. Das funktioniert nicht. Am besten wäre wohl, wenn Du Dir für xcolor ein neues Farbschema definierst. Das kannst Du dann bei \cellcolor mit angeben. Alternativ könntest Du alle Farben vor der Tabelle berechnen und dann in der Tabelle nur noch auswählen. Prinzipiell wäre es auch denkbar, ein abgewandeltes \cellcolor nach dem Vorbild der Originaldefinition zu definieren, das dann die Berechnung gleich mit vornimmt.

Farbskalierung in Tabelle nach Werten

von CollmDante » Do 19. Mai 2016, 15:57

Ich versuche für eine Diplomarbeit in einer Tabelle die Zellfärbung nach den vorliegenden Werten zu berechnen. Die Normierung um Farben zu berechnen habe ich realisiert und soweit ich diese auserhalb der Tabelle anwende funktioniert es auch. Versuche ich aber in der Tabelle, wo der Wert steht die Berechnung durch einen Befehl auszulösen, erhalte ich die Fehlermeldung:
Package xcolor Error: Undefined color `cb'. ...r{ca}20&\settbcolor{-45}\cellcolor{cb}-20&

Mein jetziger Code ist wie folgt:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[table]{xcolor}
\usepackage{fp,fp-upn}
\begin{document}
\newcommand{\twavecolorinit}[5]{ %Initialisierung für Farbskala nach Werten 
 \FPset\amin{#1}% Minimalwert
 \FPset\amax{#2}% Maximalwert
 \FPupn\am{\amax{} \amin{} add 2 div} %Mittelwertberechnung
 \newcommand*{\basecolora}{#3} %Farbe für amin
 \newcommand*{\basecolorb}{#4} %Farbe für am
 \newcommand*{\basecolorc}{#5} %Farbe für amax
 } 
 \twavecolorinit{-50}{50}{red}{green}{blue}
% Berechnung des Farbwertes als Test
\FPset\tw{20} 
 \FPiflt\tw\am%
   \FPupn{tg}{\tw{} \am{} sub \am{} \amin{} sub div -100 mul}
   \FPset\tr{0}
   \FPupn{ty}{100 \tg{} sub}
   \colorlet{ca}{\basecolora!\tg!\basecolorc!\ty!}%
  \else%
   \FPupn{tr}{\tw{} \am{} sub \am{} \amin{} sub div -100 neg mul}
   \FPset\tg{0}
   \FPupn{ty}{100 \tr{} sub}
   \colorlet{ca}{\basecolorb!\tr!\basecolorc!\ty!}
  \fi 

\newcommand{\settbcolor}[1]{\FPset\tw{#1} 
 \FPiflt\tw\am%
   \FPupn{tg}{\tw{} \am{} sub \am{} \amin{} sub div -100 mul}
   \FPset\tr{0}
   \FPupn{ty}{100 \tg{} sub}
   \colorlet{cb}{\basecolora!\tg!\basecolorc!\ty!}%
  \else%
   \FPupn{tr}{\tw{} \am{} sub \am{} \amin{} sub div -100 neg mul}
   \FPset\tg{0}
   \FPupn{ty}{100 \tr{} sub}
   \colorlet{cb}{\basecolorb!\tr!\basecolorc!\ty!}
  \fi }
%\settbcolor{-20}\textcolor{cb}{Farbe für cb} \\ Test für Befehl
 
\begin{tabular}{lll}
\cellcolor{ca}20&\settbcolor{-45}\cellcolor{cb}-20&Test\\
\end{tabular}
\end{document}
Nur mit der Farbe 'ca' würde es gehen, aber damit lässt sich in der Tabelle nicht arbeiten.

Kann mich einer bei der Lösung unterstützen?

Jens

Nach oben