summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex1220
1 files changed, 830 insertions, 390 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex b/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex
index c717e95cf7b..e181c3b97ab 100644
--- a/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex
+++ b/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex
@@ -7,7 +7,7 @@
%
% See the file doc/generic/pgf/licenses/LICENSE for more details.
-\ProvidesFileRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex,v 1.31 2010/09/15 22:27:36 tantau Exp $
+\ProvidesFileRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/frontendlayer/tikz/libraries/datavisualization/tikzlibrarydatavisualization.code.tex,v 1.44 2013/07/19 13:16:48 tantau Exp $
\usepgfmodule{datavisualization}
\usetikzlibrary{backgrounds}
@@ -60,14 +60,29 @@
% /tikz/every data is executed for each data, which can be useful to
% generally set, say, a certain data format.
%
-% "info" blocks.
%
-% Syntax: info [options] {code}
+% "data set" blocks.
+%
+% Syntax: data set [options] {name} = { ... }
+% Syntax: data set [options] {name} += { ... }
+% Syntax: data set [options] {name}
+%
+% The first syntax allows you to define a data set. The data block
+% inside {...} will be stored inside the data set
+% "name". Subsequently, the data set can be referenced by using the
+% third syntax. The second syntax allows you to extend the
+% definition of an already defined data set.
+%
+%
+% "info" and "info'" blocks.
+%
+% Syntax: info [options] {code}
+% Syntax: info' [options] {code}
+%
+% A block starting with "info" or "info'" may contain any code. It
+% will be executed after the visualization (info) or before the
+% visualization (info').
%
-% A block starting with "info" may contain any code. It
-% will be executed after the visualization. In order to execute code
-% at some other time (like, say, before the visualization), use
-% options like "before visualization".
%
% Options blocks.
%
@@ -103,7 +118,7 @@
% var x: interval [0:3];
% func y = \value x*\value x;
% }
-% [before visualization={
+% [at begin visualization={
% \fill [black!10] (visualization cs:x=0,y=0) -- (visualization cs:x=3,y=9);
% }]
% info[red]
@@ -121,6 +136,7 @@
\def\tikz@lib@datavisualization{
\begingroup%
+ \let\tikz@path@do@at@end=\relax%
% Ok, first, start a new data visualization
\pgfoonew \tikz@main@dv=new data visualization()%
% Next, create a scope for the dv
@@ -141,6 +157,7 @@
\tikz@main@dv.before visualization(%
)%
\tikz@main@dv.after visualization(%
+ \tikz@lib@dv@alias@dv@bb
\pgfkeysvalueof{/tikz/data visualization/grid actions}
\pgfkeysvalueof{/tikz/data visualization/subminor grid actions}
\pgfkeysvalueof{/tikz/data visualization/minor grid actions}
@@ -167,7 +184,7 @@
\pgfutil@ifnextchar i\tikz@lib@dv@handle@info{%
\pgfutil@ifnextchar [\tikz@lib@dv@handle@options{%
\pgfutil@ifnextchar \egroup\tikz@lib@dv@handle@endscope{%
- \PackageError{tikz}{Semicolon expected}{}%
+ \tikzerror{Semicolon expected}%
\endgroup%
}%
}%
@@ -177,11 +194,12 @@
}%
}%
}
-\def\tikz@lib@dv@parse@end{%
+\def\tikz@lib@dv@parse@end;{%
% Go!
\tikz@main@dv.survey()%
\tikz@main@dv.visualize()%
\endgroup%
+ \tikz@path@do@at@end%
}
\def\tikz@lib@dv@handle@par\par{\tikz@lib@dv@parse@loop}
@@ -196,27 +214,74 @@
}
\def\tikz@lib@dv@beg@opt[#1]{%
\pgfkeys{/pgf/data/.cd,/pgf/every data/.try,#1}%
- \pgfkeysvalueof{/pgf/data visualization/obj}.add data({{\begingroup\pgfkeys{/pgf/data/.cd,/pgf/every data/.try,#1}}})%
+ \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data({{\begingroup\pgfkeys{/pgf/data/.cd,/pgf/every data/.try,#1}}})}%
\pgfutil@ifnextchar\bgroup{
\afterassignment\tikz@lib@dv@parse@loop%
\let\tikz@dummy=%get rid of \bgroup
}{%
- \PackageError{pgf}{Opening brace expected}{}%
+ \tikzerror{Opening brace expected}%
+ \tikz@lib@dv@parse@loop%
}%
}
\def\tikz@lib@dv@handle@endscope{%
- \pgfkeysvalueof{/pgf/data visualization/obj}.add data(\endgroup)%
+ \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data(\endgroup)}%
\endgroup%
\afterassignment\tikz@lib@dv@parse@loop%
\let\tikz@dummy=%get rid of \egroup
}
-\def\tikz@lib@dv@handle@data data{\pgfdata}
+\def\tikz@lib@dv@handle@data data{%
+ \pgfutil@ifnextchar g{\tikz@lib@dv@handle@data@group}{%
+ \pgfutil@ifnextchar p{\tikz@lib@dv@handle@data@point}{%
+ \pgfdata}}}
+
+\def\tikz@lib@dv@handle@data@group group{\pgfutil@ifnextchar[{\tikz@lib@dv@handle@data@group@opt}{\tikz@lib@dv@handle@data@group@opt[]}}%}
+
+\def\tikz@lib@dv@handle@data@group@opt[#1]#2{%
+ \pgfutil@ifnextchar={\tikz@lib@dv@handle@data@group@def{#1}{#2}}{%
+ \pgfutil@ifnextchar+{\tikz@lib@dv@handle@data@group@extend{#1}{#2}}{%
+ \tikz@lib@dv@handle@data@group@use{#1}{#2}}}}
+
+\def\tikz@lib@dv@handle@data@group@def#1#2={%
+ \pgfkeys{/pgf/data/new group=#2}%
+ \tikz@lib@dv@handle@data@group@extend{#1}{#2}+=%
+}
+
+\def\tikz@lib@dv@handle@data@group@extend#1#2+={%
+ \pgfutil@ifnextchar\bgroup{
+ \begingroup%
+ \pgfkeys{/pgf/data/store in group=#2}%
+ \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data({{\begingroup\pgfkeys{/pgf/data/.cd,/pgf/every data/.try,#1}}})}%
+ \afterassignment\tikz@lib@dv@parse@loop%
+ \let\tikz@dummy=%get rid of \bgroup
+ }{%
+ \tikzerror{Opening brace expected}%
+ \tikz@lib@dv@parse@loop%
+ }%
+}
+
+\def\tikz@lib@dv@handle@data@group@use#1#2{%
+ \pgfdata[#1,use group=#2]%
+}
+
+\def\tikz@lib@dv@handle@data@point point{\pgfutil@ifnextchar[{\tikz@lib@dv@handle@data@point@opt}{\tikz@lib@dv@handle@data@point@opt[]}}%]
+\def\tikz@lib@dv@handle@data@point@opt[#1]{%
+ \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data({{\bgroup\pgfkeys{/data point/.cd,#1}\pgfdatapoint\egroup}})}%
+ \tikz@lib@dv@parse@loop%
+}
-\def\tikz@lib@dv@handle@info info{
+\def\tikz@lib@dv@handle@info info{%
+ \pgfutil@ifnextchar'{\tikz@lib@dv@handle@info@prime}{\tikz@lib@dv@handle@info@noprime}}
+\def\tikz@lib@dv@handle@info@noprime{%
\pgfutil@ifnextchar[{\tikz@lib@dv@handle@info@block@opt}{\tikz@lib@dv@handle@info@block@opt[]}}%}
\def\tikz@lib@dv@handle@info@block@opt[#1]#2{%
- \tikz@main@dv.after visualization({{\scope[#1]#2\endscope}})%
+ \tikz@main@dv.after visualization({\scope[#1]#2\endscope})%
+ \tikz@lib@dv@parse@loop
+}
+\def\tikz@lib@dv@handle@info@prime'{%
+ \pgfutil@ifnextchar[{\tikz@lib@dv@handle@info@block@opt@prime}{\tikz@lib@dv@handle@info@block@opt@prime[]}}%}
+\def\tikz@lib@dv@handle@info@block@opt@prime[#1]#2{%
+ \tikz@main@dv.before visualization({\scope[#1]#2\endscope})%
\tikz@lib@dv@parse@loop
}
@@ -229,17 +294,31 @@
%
\tikzdatavisualizationset{
- before survey/.code=\tikz@main@dv.before survey({{#1}}),
- after survey/.code=\tikz@main@dv.after survey({{#1}}),
- before visualization/.code=\tikz@main@dv.before visualization({{#1}}),
- after visualization/.code=\tikz@main@dv.after visualization({{#1}}),
- at start survey/.code=\tikz@main@dv.at start survey({{#1}}),
- at end survey/.code=\tikz@main@dv.at end survey({{#1}}),
- at start visualization/.code=\tikz@main@dv.at start visualization({{#1}}),
- at end visualization/.code=\tikz@main@dv.at end visualization({{#1}}),
+ before survey/.code=\tikz@main@dv.before survey({#1}),
+ after survey/.code=\tikz@main@dv.after survey({#1}),
+ before visualization/.code=\tikz@main@dv.before visualization({#1}),
+ after visualization/.code=\tikz@main@dv.after visualization({#1}),
+ at start survey/.code=\tikz@main@dv.at start survey({#1}),
+ at end survey/.code=\tikz@main@dv.at end survey({#1}),
+ at start visualization/.code=\tikz@main@dv.at start visualization({#1}),
+ at end visualization/.code=\tikz@main@dv.at end visualization({#1}),
}
+\def\tikz@lib@dv@alias@dv@bb{
+ \pgfnodealias{data bounding box}{data visualization bounding box}%
+ \pgfkeys{/pgf/freeze local bounding box=data bounding box}%
+}
+
+%
+% The data point key
+%
+\tikzdatavisualizationset{
+ data point/.code={
+ \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data({{\bgroup\pgfkeys{/data point/.cd,#1}\pgfdatapoint\egroup}})}%
+ }
+}
+
%
% Object setup
@@ -409,7 +488,7 @@
%
\tikzdatavisualizationset{%
- new axis/.style={
+ new axis base/.style={
new object={
class=scaling mapper,
store=/tikz/data visualization/#1/scaling mapper,
@@ -462,8 +541,6 @@
node styling/.style={%
/utils/exec={\pgfkeysgetvalue{/tikz/data visualization/@node styling}\tikz@temp\expandafter\tikzset\expandafter{\tikz@temp}}},
node style/.style={/tikz/data visualization/@node styling/.append={,#1}},
- grid styling/.style=,
- grid style/.style={grid styling/.append style={#1}},
% General extends (both axes, grid and ticks)
low/.initial=0,
high/.initial=0,
@@ -483,20 +560,31 @@
@setup at setters,
% Tick keys
direction axis/.initial=,
- value/.initial=,
- pos/.initial=,
+ % Tick text modifiers
+ tick text low even padding/.initial=0pt,
+ tick text high even padding/.initial=0pt,
+ tick text low odd padding/.initial=0pt,
+ tick text high odd padding/.initial=0pt,
+ tick text odd padding/.style={tick text low odd padding={-#1},tick text high odd padding={#1}},
+ tick text even padding/.style={tick text low even padding={-#1},tick text high even padding={#1}},
+ tick text padding/.style={tick text odd padding={#1},tick text even padding={#1}},
+ stack/.style={tick text even padding={#1}},
+ stack'/.style={tick text odd padding={#1}},
+ stack/.default=1em,
+ stack'/.default=1em,
tick text at low/.is if=tikz@dv@min@tick@node,
tick text at high/.is if=tikz@dv@max@tick@node,
no tick text/.style={tick text at low=false,tick text at high=false},
+ %
every major ticks/.style={style={line cap=round},tick length=2pt},
- every minor ticks/.style={style={help lines,thin,line cap=round},tick length=1.4pt},
- every subminor ticks/.style={style={help lines,line cap=round},tick length=0.8pt},
+ every minor ticks/.style={style={solid, help lines,thin,line cap=round},tick length=1.4pt},
+ every subminor ticks/.style={style={solid, help lines,line cap=round},tick length=0.8pt},
clean ticks/.style={node style={fill=white}},
% Default grid styles
- grid style={high=max,low=min},
- every major grid/.style={style={help lines,thin,black!25}},
- every minor grid/.style={style={help lines,black!25}},
- every subminor grid/.style={style={help lines,black!10}},
+ every grid/.style={high=max,low=min},
+ every major grid/.style={style={solid, help lines,thin,black!25}},
+ every minor grid/.style={style={solid, help lines,black!25}},
+ every subminor grid/.style={style={solid, help lines,black!10}},
at default ticks/.code={%
\expandafter\pgfkeysalso\expandafter{\tikz@lib@dv@ticks@default@at}},
at ticks/.code={%
@@ -549,21 +637,21 @@
rounded corners=1.5pt
}
},
- every visualizer label/.style={
+ every data set label/.style={
every ticks,
node style={
- font=\pgfutil@font@small
+ font=\pgfutil@font@small,
}
},
@color of visualizer labels/.style={text=black},
- every visualizer legend label/.style={
+ every label in legend/.style={
node style={
- fill=none
+ fill=none,
}
},
every axis label/.style={
node style={%
- font=\pgfutil@font@small
+ font=\pgfutil@font@small,
}
}
}
@@ -580,7 +668,15 @@
padding min/.style={\tikz@dv@axis/padding min={#1}},
padding max/.style={\tikz@dv@axis/padding max={#1}},
padding/.style={padding min={-#1},padding max={#1}},
- label/.style={\tikz@dv@axis/label={#1}},
+ label/.code={%
+ \def\pgf@temp{#1}%
+ \ifx\pgf@temp\tikz@lib@dv@auto@attribute%
+ \tikzdatavisualizationset{\tikz@dv@axis/label/.expanded=$\noexpand\mathit{\pgfkeysvalueof{\tikz@dv@axis/attribute}}$}%
+ \else
+ \tikzdatavisualizationset{\tikz@dv@axis/label={#1}}%
+ \fi
+ },
+ label/.default=\tikz@lib@dv@auto@attribute,
%
% Strategies
%
@@ -590,17 +686,9 @@
% Attribute setter
%
goto/.code={\tikz@dv@goto{\tikz@dv@axis}{#1}},
- %
- % Modification of the range
- %
- include values/.style={%
- /tikz/data visualization/before survey/.expanded={%
- \noexpand\pgfkeysgetvalue{\tikz@dv@axis/scaling mapper}\noexpand\tikz@dv@axis@mapper%
- \noexpand\foreach \noexpand\tikz@lib@dv@temp in {#1} {%
- \noexpand\tikz@dv@axis@mapper.include in value(\noexpand\tikz@lib@dv@temp)%
- }%
- }%
- },
+ goto pos/.code={\tikz@dv@goto@pos{\tikz@dv@axis}{#1}},
+ anchor at min/.code={\tikz@lib@dv@special@at{\tikz@dv@axis}{\tikz@dv@min@anchor}},
+ anchor at max/.code={\tikz@lib@dv@special@at{\tikz@dv@axis}{\tikz@dv@max@anchor}},
%
% Visualization setters
%
@@ -609,6 +697,7 @@
% Ticks settings
%
ticks/.style={\tikz@dv@axis/ticks at/.append={,#1}},
+ ticks/.default=some,
visualize ticks/.code=\expandafter\tikz@lib@dv@tv\expandafter{\tikz@dv@axis}{#1},
%
% Grid settings
@@ -617,11 +706,52 @@
grid/.default=at default ticks,
visualize grid/.code=\expandafter\tikz@lib@dv@gv\expandafter{\tikz@dv@axis}{#1},
%
+ ticks and grid/.style={\tikz@dv@axis/ticks at/.append={,#1},\tikz@dv@axis/grid at/.append={,#1}},
+ %
% Visualizing axis labels
%
visualize label/.code=\expandafter\tikz@lib@dv@lv\expandafter{\tikz@dv@axis}{#1},
}
+\def\tikz@lib@dv@auto@attribute{\tikz@lib@dv@auto@attribute}
+
+
+% Range options
+\tikzdatavisualizationset{
+ axis options/.cd,
+ %
+ % Including a value in the range
+ %
+ include value/.style={%
+ /tikz/data visualization/before survey/.expanded={%
+ \noexpand\pgfkeysgetvalue{\tikz@dv@axis/scaling mapper}\noexpand\tikz@dv@axis@mapper%
+ \noexpand\foreach \noexpand\tikz@lib@dv@temp in {#1} {%
+ \noexpand\tikz@dv@axis@mapper.include in value(\noexpand\tikz@lib@dv@temp)%
+ }%
+ }%
+ },
+ %
+ % Directly setting the min or max
+ %
+ min value/.style={
+ /tikz/data visualization/at end survey/.expanded={%
+ \noexpand\pgfkeysgetvalue{\tikz@dv@axis/scaling mapper}\noexpand\tikz@dv@axis@mapper%
+ \noexpand\tikz@lib@dv@set\noexpand\tikz@dv@axis@mapper{#1}{min}%
+ }
+ },
+ max value/.style={
+ /tikz/data visualization/at end survey/.expanded={%
+ \noexpand\pgfkeysgetvalue{\tikz@dv@axis/scaling mapper}\noexpand\tikz@dv@axis@mapper%
+ \noexpand\tikz@lib@dv@set\noexpand\tikz@dv@axis@mapper{#1}{max}%
+ }
+ },
+}
+
+\def\tikz@lib@dv@set#1#2#3{%
+ \pgfdvmathenter{\pgf@dv@value}{#2}%
+ #1.get in range interval()%
+ \pgfdvinrangeinterval.let #3(\pgf@dv@value)%
+}
% Layer options
\tikzdatavisualizationset{
@@ -664,15 +794,15 @@
}
\def\tikz@dv@goto#1#2{%
- \edef\pgf@temp{#2}%
- \ifx\pgf@temp\tikz@lib@dv@padded@min@text%
+ \edef\pgf@@temp{#2}%
+ \ifx\pgf@@temp\tikz@lib@dv@padded@min@text%
\pgfkeysvalueof{#1/scaling mapper}.set in to(min)%
\pgfkeysvalueof{#1/scaling mapper}.get out()%
\pgfkeysgetvalue{#1/padding min}\pgf@temp%
\pgfmathparse{\pgf@temp}%
\pgfkeyslet{/data point/\pgfdvout/offset}\pgfmathresult%
\else%
- \ifx\pgf@temp\tikz@lib@dv@padded@max@text%
+ \ifx\pgf@@temp\tikz@lib@dv@padded@max@text%
\pgfkeysvalueof{#1/scaling mapper}.set in to(max)%
\pgfkeysvalueof{#1/scaling mapper}.get out()%
\pgfkeysgetvalue{#1/padding max}\pgf@temp%
@@ -682,10 +812,21 @@
\pgfkeysvalueof{#1/scaling mapper}.set in to(#2)%
\fi%
\fi%
-}
+}
+
+\def\tikz@dv@goto@pos#1#2{%
+ \pgfkeyssetvalue{/data point/\pgfkeysvalueof{#1/attribute}/out pos}{#2}%
+}
\def\tikz@lib@dv@padded@min@text{padded min}
\def\tikz@lib@dv@padded@max@text{padded max}
+
+\def\tikz@lib@dv@special@at#1#2{%
+ % Ok, calculate direction vector:
+ \tikzpointandanchordirection{\pgfkeysvalueof{#1/scaling mapper}.set in to(min)}{\pgfkeysvalueof{#1/scaling mapper}.set in to(max)}
+ \tikzset{anchor/.expanded=#2}
+}
+
% Ticks visualization
%
@@ -743,19 +884,22 @@
{%
\let\tikz@dv@at@list\pgfutil@empty%
\let\tikz@dv@style@at@list\pgfutil@empty%
+ \pgfkeysgetvalue{#2/scaling mapper}\tikz@lib@dv@mapper
+ \expandafter\tikzdatavisualizationset\expandafter{\tikz@lib@dv@settings}%
\scope[/tikz/data visualization/.cd,every ticks/.try,every #1 ticks/.try,#3]%
% Setup options
- \pgfkeysgetvalue{#2/scaling mapper}\tikz@lib@dv@mapper
- \expandafter\tikzdatavisualizationset\expandafter{\tikz@lib@dv@settings}%
\pgfkeysgetvalue{/tikz/data visualization/common}\tikz@temp
\expandafter\tikzdatavisualizationset\expandafter{\tikz@temp}
\pgfkeysgetvalue{/tikz/data visualization/#1}\tikz@temp
\expandafter\tikzdatavisualizationset\expandafter{\tikz@temp}
\pgfkeysgetvalue{/tikz/data visualization/\pgfkeysvalueof{/tikz/data visualization/direction axis}/scaling mapper}\pgf@dv@tick@dir@mapper
% Ok, now it's time to draw the ticks!
- \foreach \tikz@dv@tick@pos in \tikz@dv@at@list
+ \foreach \tikz@dv@tick@pos[count=\tikz@dv@tick@count] in \tikz@dv@at@list
{
\ifx\tikz@dv@tick@pos\pgfutil@empty
+ \c@pgf@counta=\tikz@dv@tick@count\relax%
+ \advance\c@pgf@counta by-1\relax%
+ \edef\tikz@dv@tick@count{\the\c@pgf@counta}%
\else
\expandafter\tikz@lib@dv@parse\tikz@dv@tick@pos\pgf@stop%
\expandafter\tikzdatavisualizationset\expandafter{\tikz@lib@dv@tick@opt}%
@@ -768,15 +912,40 @@
\xdef\pgf@dv@tick@dir{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}
% Now, show something:
\tikz@lib@handle@at@style%
- \scope[/tikz/data visualization/styling]
- \pgf@process{\pgfpointadd{\pgf@dv@tick@origin}{\pgfpointscale{\pgfkeysvalueof{/tikz/data visualization/high}}{\pgf@dv@tick@dir}}}
- \xdef\tikz@dv@max@tick{\the\pgf@x,\the\pgf@y}
- \pgf@process{\pgfpointadd{\pgf@dv@tick@origin}{\pgfpointscale{\pgfkeysvalueof{/tikz/data visualization/low}}{\pgf@dv@tick@dir}}}
- \xdef\tikz@dv@min@tick{\the\pgf@x,\the\pgf@y}
- \scope[data visualization/ticks layer] \draw (\tikz@dv@min@tick) -- (\tikz@dv@max@tick); \endscope
- \iftikz@dv@min@tick@node \scope[data visualization/ticks node layer] \path (\tikz@dv@min@tick) \tikz@dv@handle@tick{\tikz@dv@min@anchor}; \endscope \fi
- \iftikz@dv@max@tick@node \scope[data visualization/ticks node layer] \path (\tikz@dv@max@tick) \tikz@dv@handle@tick{\tikz@dv@max@anchor}; \endscope\fi
+ \pgfkeysgetvalue{/tikz/data visualization/high}\tikz@dv@max@val%
+ \pgfkeysgetvalue{/tikz/data visualization/low}\tikz@dv@min@val%
+ \iftikz@dv@max@tick@node\pgfmathsetmacro\tikz@dv@max@val{%
+ \tikz@dv@max@val+(\pgfkeysvalueof{%
+ /tikz/data visualization/tick text high
+ \ifodd\tikz@dv@tick@count odd \else even \fi padding}%
+ )}%
+ \fi%
+ \iftikz@dv@min@tick@node\pgfmathsetmacro\tikz@dv@min@val{%
+ \tikz@dv@min@val+(\pgfkeysvalueof{%
+ /tikz/data visualization/tick text low
+ \ifodd\tikz@dv@tick@count odd \else even \fi padding}%
+ )}%
+ \fi%
+ \pgf@process{\pgfpointadd{\pgf@dv@tick@origin}{\pgfpointscale{\tikz@dv@max@val}{\pgf@dv@tick@dir}}}
+ \xdef\tikz@dv@max@tick{\the\pgf@x,\the\pgf@y}
+ \pgf@process{\pgfpointadd{\pgf@dv@tick@origin}{\pgfpointscale{\tikz@dv@min@val}{\pgf@dv@tick@dir}}}
+ \xdef\tikz@dv@min@tick{\the\pgf@x,\the\pgf@y}
+ \scope[data visualization/ticks layer]
+ \tikzdatavisualizationset{every \ifodd\tikz@dv@tick@count odd \else even \fi tick/.try}
+ \draw [/tikz/data visualization/styling] (\tikz@dv@min@tick) -- (\tikz@dv@max@tick);
\endscope
+ \iftikz@dv@min@tick@node
+ \scope[data visualization/ticks node layer]
+ \tikzdatavisualizationset{every \ifodd\tikz@dv@tick@count odd \else even \fi tick/.try}
+ \path [/tikz/data visualization/styling] (\tikz@dv@min@tick) \tikz@dv@handle@tick{\tikz@dv@min@anchor};
+ \endscope
+ \fi
+ \iftikz@dv@max@tick@node
+ \scope[data visualization/ticks node layer]
+ \tikzdatavisualizationset{every \ifodd\tikz@dv@tick@count odd \else even \fi tick/.try}
+ \path [/tikz/data visualization/styling] (\tikz@dv@max@tick) \tikz@dv@handle@tick{\tikz@dv@max@anchor};
+ \endscope
+ \fi
\fi
}
\endscope
@@ -808,7 +977,7 @@
\pgfdvmathenter{\tikz@lib@dv@typesetnum}{\tikz@dv@tick@pos}%
\pgfdvmathexitbyscientificformat{\tikz@lib@dv@typesetnum}{\tikz@lib@dv@typesetnum}% hmm... not sure about this...
\pgfkeysvalueof{/tikz/data visualization/tick prefix}%
- \pgfkeysvalueof{/tikz/data visualization/tick typesetter}{\tikz@lib@dv@typesetnum}%
+ \pgfkeys{/tikz/data visualization/tick typesetter=\tikz@lib@dv@typesetnum}%
\pgfkeysvalueof{/tikz/data visualization/tick suffix}%
}
@@ -860,7 +1029,7 @@
% Help function
\def\tikzpointandanchordirection#1#2{%
% This function works like pgfpointdvdirection, but also computes
- % appriate "min" and "max" anchors.
+ % appropriate "min" and "max" anchors.
\pgf@process{\pgfpointdvdirection{#1}{#2}}
{
\pgf@ya=\pgf@y
@@ -907,10 +1076,10 @@
{%
\let\tikz@dv@at@list\pgfutil@empty
\let\tikz@dv@style@at@list\pgfutil@empty
- \scope[data visualization/grid layer,/tikz/data visualization/.cd,every #1 grid/.try,grid styling,grid styling/.style=,#3]
+ \pgfkeysgetvalue{#2/scaling mapper}\tikz@lib@dv@mapper
+ \let\tikz@lib@dv@ticks@default@at\pgfutil@empty%
+ \scope[data visualization/grid layer,/tikz/data visualization/.cd,every grid,every #1 grid/.try,#3]
% Setup options
- \pgfkeysgetvalue{#2/scaling mapper}\tikz@lib@dv@mapper
- \let\tikz@lib@dv@ticks@default@at\pgfutil@empty%
\pgfkeysgetvalue{#2/ticks at}\tikz@lib@dv@ticks@at%
\expandafter\tikzdatavisualizationset\expandafter{\tikz@lib@dv@settings}%
\pgfkeysgetvalue{/tikz/data visualization/common}\tikz@temp
@@ -925,7 +1094,6 @@
\else
\expandafter\tikz@lib@dv@parse\tikz@dv@grid@pos\pgf@stop%
\expandafter\tikzdatavisualizationset\expandafter{\tikz@lib@dv@tick@opt}%
- \tikzdatavisualizationset{grid styling}%
\tikz@lib@dv@mapper.set in to(\tikz@dv@tick@pos)%
\draw[/tikz/data visualization/styling]
\pgfextra{
@@ -966,46 +1134,17 @@
\ifx\tikz@dv@lib@label\pgfutil@empty%
% Great, nothing to do
\else
- \scope[/tikz/data visualization/.cd,every axis label/.try,#2]
- \pgfkeysgetvalue{/tikz/data visualization/value}\tikz@lib@dv@at%
- \pgfkeysgetvalue{/tikz/data visualization/pos}\tikz@lib@dv@pos%
- \pgfkeysgetvalue{#1/scaling mapper}\tikz@dv@mapper
- \ifx\tikz@lib@dv@pos\pgfutil@empty%
- \ifx\tikz@lib@dv@at\pgfutil@empty%
- % Well, hopefully the node options setup things correctly...
- \else%
- % Special treatment of "min" and "max"
- \ifx\tikz@lib@dv@at\pgf@min@text%
- \tikz@lib@dv@special@at{\tikz@dv@min@anchor}
- \else \ifx\tikz@lib@dv@at\tikz@lib@dv@padded@min@text%
- \tikz@lib@dv@special@at{\tikz@dv@min@anchor}
- \else \ifx\tikz@lib@dv@at\pgf@max@text%
- \tikz@lib@dv@special@at{\tikz@dv@max@anchor}
- \else \ifx\tikz@lib@dv@at\tikz@lib@dv@padded@max@text%
- \tikz@lib@dv@special@at{\tikz@dv@max@anchor}
- \fi\fi\fi\fi%
- \tikz@dv@goto{#1}{\tikz@lib@dv@at}%
- \pgftransformshift{\pgfpointdvlocaldatapoint}%
- \fi%
- \else%
- \tikz@dv@mapper.set in to(min)%
- \pgftransformshift{\pgfpointscale{1-\tikz@lib@dv@pos}{\pgfpointdvlocaldatapoint}}
- \tikz@dv@mapper.set in to(max)%
- \pgftransformshift{\pgfpointscale{\tikz@lib@dv@pos}{\pgfpointdvlocaldatapoint}}
- \fi
+ \scope[anchor=center,/tikz/data visualization/.cd,every axis label/.try,#2]
\expandafter\tikz@lib@dv@parse@node\tikz@dv@lib@label\pgf@stop
\endscope
\fi
}
-\def\tikz@lib@dv@special@at#1{%
- % Ok, calculate direction vector:
- \tikzpointandanchordirection{\tikz@dv@mapper.set in to(min)}{\tikz@dv@mapper.set in to(max)}
- \tikzset{anchor=#1}
-}
\def\tikz@lib@dv@parse@node{\pgfutil@ifnextchar[\tikz@lib@dv@parse@node@opt{\tikz@lib@dv@parse@node@opt[]}}%}
\def\tikz@lib@dv@parse@node@opt[#1]#2\pgf@stop{
- \node [/tikz/data visualization/node styling,#1] {#2};
+ \tikzdatavisualizationset{#1}
+ \pgftransformshift{\pgfpointdvlocaldatapoint}%
+ \node [/tikz/data visualization/node styling] {#2};
}
@@ -1020,10 +1159,10 @@
minor steps between steps/.initial=,
minor steps between steps/.default=9,
phase/.initial=0,
- tick typesetter/.initial=\pgfmathprintnumber,
+ tick typesetter/.code=\pgfmathprintnumber{#1},
tick prefix/.initial=,
tick suffix/.initial=,
- tick unit/.style={tick suffix={#1}},% this is an alias
+ tick unit/.style={tick suffix={$\,\rm#1$}},% this is an alias
}
\def\tikz@lib@dv@compute@at@linear{%
@@ -1111,6 +1250,7 @@
standard about strategy/.style={about strategy={1.5/1.0,2.3/2.0,4/2.5,7/5,11/10}},
standard about strategy,
euro about strategy/.style={about strategy={1.5/1.0,3/2.0,7/5,11/10}},
+ decimal about strategy/.style={about strategy={3/1.0,11/10}},
half about strategy/.style={about strategy={2/1.0,7/5,11/10}},
quarter about strategy/.style={about strategy={1.8/1.0,4/2.5,7/5,11/10}},
int about strategy/.style={about strategy={1.5/1.0,2.5/2.0,3.5/3.0,4.5/4.0,7/5,11/10}},
@@ -1269,7 +1409,7 @@
\tikzdatavisualizationset{%
new Cartesian axis/.style={
- new axis={#1},
+ new axis base={#1},
new object={
class=linear transformer,
store=/tikz/data visualization/#1/linear transformer,
@@ -1277,7 +1417,7 @@
arg2 from key=/tikz/data visualization/#1/unit vector,
},
#1/scaling/default/.initial=0 at 0 and 1 at 1cm,
- #1/unit vector/.initial=,
+ #1/unit vector/.initial=\pgfqpoint{1pt}{0pt},
}
}
@@ -1285,8 +1425,6 @@
/tikz/data visualization/axis options/.cd,
unit vector/.code=\tikz@scan@one@point\tikz@lib@dv@uv#1,
length/.style={\tikz@dv@axis/scaling=min at 0 and max at #1},
- positive length/.style={\tikz@dv@axis/scaling=0 at 0 and max at #1},
- negative length/.style={\tikz@dv@axis/scaling=min at -#1 and 0 at 0},
unit length/.code={\tikz@dv@parse@unit@length{#1}},
power unit length/.style={\tikz@dv@axis/scaling=1 at 0 and 10 at #1}
}
@@ -1313,34 +1451,62 @@
%
\tikzdatavisualizationset{
- new visualizer/.style 2 args={
- /pgf/data/#1/.style={/data point/visualizer=#1},
+ new visualizer/.style n args={3}{
#1/.code={
\def\tikz@visualizer{#1}%
\pgfkeys{/tikz/data visualization/visualizer options/.cd,##1}
+ \pgf@dv@do@adddata{\pgfkeysvalueof{/pgf/data visualization/obj}.add data(\pgfkeys{/data point/set=#1})}%
},
/utils/exec={
\advance\tikzdvvisualizercounter by 1\relax
- \edef\tikz@temp{/data point/visualizer/#1/.initial=\the\tikzdvvisualizercounter}
+ \edef\tikz@temp{/data point/set/#1/.initial=\the\tikzdvvisualizercounter}
\expandafter\tikzset\expandafter{\tikz@temp}
},
/data point/#1/execute at begin/.initial={
- \pgfkeyssetvalue{/data point/visualizer}{#1}
+ \pgfkeyssetvalue{/data point/set}{#1}
\scope[
- /tikz/data visualization/every visualizer/.try,
#2,
- /utils/exec=\pgf@signalstyle.emit(),
+ /tikz/data visualization/every visualizer/.try,
+ /tikz/data visualization/visualizers/#1/signal,
/tikz/data visualization/visualizers/#1/styling/.try]
},
/data point/#1/execute at end/.initial={
\path; % invokes every path implicitly
\endscope
},
+ /tikz/data visualization/visualizers/#1/signal/.code=\pgf@signalstyle.emit(),
/tikz/data visualization/visualizers/#1/styling/.style=,
+ /tikz/data visualization/visualizers/#1/label in legend options/.style={#3},
},
- visualizer style sheet/.style={/data point/visualizer/.style sheet={#1}}
+ style sheet/.style={/data point/set/.style sheet={#1}},
+ /pgf/data/set/.style={/data point/set=#1},
+}
+
+\tikzdatavisualizationset{
+ new sub visualizer/.style n args={4}{
+ #4/#1/.code={
+ \def\tikz@visualizer{#4/#1}%
+ \pgfkeys{/tikz/data visualization/visualizer options/.cd,##1}
+ },
+ /data point/#4/#1/execute at begin/.initial={
+ \pgfkeyssetvalue{/data point/set}{#4}
+ \scope[
+ #2,
+ /tikz/data visualization/every visualizer/.try,
+ /tikz/data visualization/visualizers/#4/signal,
+ /tikz/data visualization/visualizers/#4/styling/.try,
+ /tikz/data visualization/visualizers/#4/#1/styling/.try]
+ },
+ /data point/#4/#1/execute at end/.initial={
+ \path; % invokes every path implicitly
+ \endscope
+ },
+ /tikz/data visualization/visualizers/#4/#1/styling/.style=,
+ /tikz/data visualization/visualizers/#4/#1/label in legend options/.style={#3},
+ }
}
+
\def\tikz@do@visualizer#1#2{%
\tikzdatavisualizationset{
#2=#1
@@ -1351,16 +1517,19 @@
\newif\iftikz@dv@visualizer@label@inline
-\tikzset{
- @set plot handler/.code={\let\tikz@plot@handler=#1},
- no lines/.style={@set plot handler=\pgfplothandlerdiscard,/utils/exec=\tikzdatavisualizationset{default label in legend mark}},
- smooth line/.style={@set plot handler=\pgfplothandlercurveto,/utils/exec=\tikzdatavisualizationset{default label in legend path}},
- smooth cycle/.style={@set plot handler=\pgfplothandlerclosedcurve,/utils/exec=\tikzdatavisualizationset{default label in legend closed path}},
- straight line/.style={@set plot handler=\pgfplothandlerlineto,/utils/exec=\tikzdatavisualizationset{default label in legend path}},
- straight cycle/.style={@set plot handler=\pgfplothandlerpolygon,/utils/exec=\tikzdatavisualizationset{default label in legend closed path}},
- polygon/.style={straight cycle=cycle},% alias
- gapped line/.style={@set plot handler=\pgfplothandlergaplineto,/utils/exec=\tikzdatavisualizationset{default label in legend path}},
- gapped cycle/.style={@set plot handler=\pgfplothandlergapcycle,/utils/exec=\tikzdatavisualizationset{gapped circular label in legend line}}
+\tikzdatavisualizationset{visualizer options/.cd,
+ @set/.style 2 args={
+ /tikz/data visualization/visualizers/\tikz@visualizer/styling/.append style={/utils/exec={\let\tikz@dv@plot@handler=#1}},
+ /tikz/data visualization/visualizers/\tikz@visualizer/label in legend options/.append style={#2}
+ },
+ no lines/.style={@set={\pgfplothandlerdiscard}{default label in legend mark}},
+ smooth line/.style={@set={\pgfplothandlercurveto}{default label in legend path}},
+ smooth cycle/.style={@set={\pgfplothandlerclosedcurve}{default label in legend closed path}},
+ straight line/.style={@set={\pgfplothandlerlineto}{default label in legend path}},
+ straight cycle/.style={@set={\pgfplothandlerpolygon}{default label in legend closed path}},
+ polygon/.style={straight cycle},% alias
+ gap line/.style={@set={\pgfplothandlergaplineto}{default label in legend path}},
+ gap cycle/.style={@set={\pgfplothandlergapcycle}{gap circular label in legend line}}
}
@@ -1378,16 +1547,17 @@
\begingroup
\def\tikz@visualizer{#1}%
\pgfkeys{/tikz/data visualization/visualizer label options/.cd,
- /tikz/data visualization/every label visualizer/.try,
#2}
\pgfkeysgetvalue{/tikz/data visualization/visualizer label options/text}\tikz@dv@temp@lab
\def\tikz@tempa{
- \scope[/tikz/data visualization/visualizer label options/.cd,
- /tikz/data visualization/every label visualizer/.try,
+ \scope[
+ /utils/exec=\def\tikz@visualizer{#1},%
+ /tikz/data visualization/visualizer label options/.cd,
#2]
+ \tikzdatavisualizationset{every data set label/.try}
\path [
- /data point/visualizer=#1,/utils/exec=\pgf@signalstyle.emit(),
- /tikz/data visualization/.cd,every visualizer label]
+ /data point/set=#1,/utils/exec=\pgf@signalstyle.emit(),
+ /tikz/data visualization/.cd,every label in data/.try]
(label visualizer coordinate') --
(label visualizer coordinate)
node [
@@ -1405,7 +1575,7 @@
\endgroup
},
arg1/.expand once=\tikz@dv@label@attribute,
- arg2/.expand once=\tikz@dv@label@threshold,
+ arg2=\tikz@dv@label@threshold,
arg3/.expand once=\tikz@dv@label@code,
arg4=\pgfdvvisualizerfilter{#1}
},
@@ -1418,40 +1588,45 @@
\def\tikz@create@label@count#1{
\tikzdatavisualizationset{
new object={
- when=after survey,
+ when=before survey,
store=/tikz/data visualization/visualizers/#1/count/obj,
class=count,
- arg1=visualizers/#1/count,
- after creation={
- \tikzdvobj.set filter({%
- \pgfkeysgetvalue{/data point/visualizer}\pgf@tempa%
- \def\pgf@tempb{#1}%
- \ifx\pgf@tempa\pgf@tempb%
- \else
- \pgfdvfilterpassedfalse%
- \fi
- })
- }
+ arg1=set/#1/count,
+ after creation={\tikzdvobj.set filter(\pgfdvvisualizerfilter{#1})}
}
}
}
\pgfkeys{
/tikz/data visualization/visualizer label options/.cd,
- at/.code args={#1>=#2}{%
+ when/.code args={#1 is#2}{%
\def\tikz@dv@label@attribute{#1}%
\def\tikz@dv@label@threshold{#2}%
},
index/.code={%
- \edef\tikz@dv@label@attribute{visualizers/\tikz@visualizer/count}%
+ \edef\tikz@dv@label@attribute{set/\tikz@visualizer/count}%
\def\tikz@dv@label@threshold{#1}%
},
+ pos/.code={%
+ \edef\tikz@dv@label@attribute{set/\tikz@visualizer/count}%
+ \pgfkeysvalueof{/tikz/data visualization/visualizers/\tikz@visualizer/count/obj}.get max(\tikz@lib@max)
+ \edef\tikz@dv@label@threshold{(#1*\tikz@lib@max)}%
+ },
+ auto/.code={%
+ \edef\tikz@dv@label@attribute{set/\tikz@visualizer/count}%
+ \pgfkeysvalueof{/tikz/data visualization/visualizers/\tikz@visualizer/count/obj}.get max(\tikz@lib@max)
+ \edef\tikz@dv@label@threshold{({(\pgfkeysvalueof{/data point/set/\tikz@visualizer}-0.5)/\the\tikzdvvisualizercounter*\tikz@lib@max})}
+ },
text/.initial=,
- text'/.style={text={#1},node style=swap},
+ text'/.style={text={#1},node style=swap,/utils/exec=\def\tikz@lib@dv@pin@sign{-}},
node style/.style={/tikz/data visualization/node style={#1}},
text colored/.style=/tikz/data visualization/text colored,
+ pin angle/.store in=\tikz@lib@dv@pin@dir,
+ pin length/.style={node style={pin distance={#1}}},
}
+\let\tikz@lib@dv@pin@sign\pgfutil@empty
+
\let\tikz@dv@label@attribute\pgfutil@empty
\let\tikz@dv@label@threshold\pgfutil@empty
\let\tikz@dv@label@code\pgfutil@empty
@@ -1486,7 +1661,7 @@
\let\pgfdvendrow=\pgfmatrixendrow%
\def\pgf@marshal{
\matrix[at/.expand once=\pgf@dv@at,matrix anchor/.expand
- once=\pgf@dv@anchor,/tikz/data visualization/#1/styling]
+ once=\pgf@dv@anchor,/tikz/data visualization/#1/matrix node styling]
}
\expandafter\pgf@marshal\expandafter{\pgf@dv@temp};
}
@@ -1500,7 +1675,7 @@
#1/@strategy/.initial=down then right,
#1/anchor/.initial=west,
#1/at/.initial=(data visualization bounding box.east),
- #1/styling/.style={row sep=0pt,column sep=.8em},
+ #1/matrix node styling/.style={row sep=0pt,column sep=.8em},
%
%
%
@@ -1511,7 +1686,11 @@
},
#1={every new legend}
}}},
- legend/.style={new legend=legend,legend={#1}}
+ new legend/.default=main legend,
+ legend/.style={
+ new legend,
+ main legend={#1}
+ }
}
\def\tikz@do@legend@options#1#2{
@@ -1545,38 +1724,187 @@
%
anchor/.style={\tikz@dv@legend/anchor={#1}},
at/.style={\tikz@dv@legend/at={#1}},
- right/.style={
+ % Outer placements
+ right/.style={east outside},
+ left/.style={west outside},
+ above/.style={north outside},
+ below/.style={south outside},
+ east outside/.style={
columns=1,
at={([xshift=.8em]data visualization bounding box.east)},
anchor=west,
},
- left/.style={
+ north east outside/.style={
+ columns=1,
+ at={([xshift=.8em]data visualization bounding box.north east|-
+ data bounding box.north)},
+ anchor=north west,
+ },
+ south east outside/.style={
+ columns=1,
+ at={([xshift=.8em]data visualization bounding box.south east |-
+ data bounding box.south)},
+ anchor=south west,
+ },
+ west outside/.style={
columns=1,
+ label style=text left,
at={([xshift=-.8em]data visualization bounding box.west)},
anchor=east,
},
- below/.style={
+ north west outside/.style={
+ columns=1,
+ label style=text left,
+ at={([xshift=-.8em]data visualization bounding box.north west |-
+ data bounding box.north)},
+ anchor=north east,
+ },
+ south west outside/.style={
+ columns=1,
+ label style=text left,
+ at={([xshift=-.8em]data visualization bounding box.south west |-
+ data bounding box.south)},
+ anchor=south east,
+ },
+ south outside/.style={
rows=1,
at={([yshift=-.5em]data visualization bounding box.south)},
anchor=north,
},
- above/.style={
+ north outside/.style={
rows=1,
at={([yshift=.5em]data visualization bounding box.north)},
anchor=south,
},
- every new legend/.style={right,label style=text right},
+ every new legend/.style={east outside,label style=text right},
+ %
+ % Inner placements
+ %
+ % First, styling
+ every legend inside/.style={
+ opaque=white,
+ label style={node style={font=\pgfutil@font@footnotesize}}
+ },
+ opaque/.style={
+ matrix node style={
+ inner sep=.333ex,
+ outer sep=.5ex,
+ rounded corners=3pt,
+ execute at begin cell={\tikzset{sharp corners}}, % get rid of
+ % rounded corners in cells of the
+ % legend matrix
+ fill=#1
+ },
+ },
+ opaque/.default=white,
+ transparent/.style={matrix node style={fill=none}},
+ % Second, the placements
+ north east inside/.style={
+ columns=1,
+ at={([xshift=-.3em]data bounding box.north east)},
+ anchor=north east,
+ every legend inside
+ },
+ south west inside/.style={
+ columns=1,
+ at={([xshift=.3em]data bounding box.south west)},
+ anchor=south west,
+ every legend inside
+ },
+ north west inside/.style={
+ columns=1,
+ at={([xshift=.3em]data bounding box.north west)},
+ anchor=north west,
+ every legend inside
+ },
+ south east inside/.style={
+ columns=1,
+ at={([xshift=-.3em]data bounding box.south east)},
+ anchor=south east,
+ every legend inside
+ },
+ west inside/.style={
+ columns=1,
+ at={([xshift=.3em]data bounding box.west)},
+ anchor=west,
+ every legend inside
+ },
+ east inside/.style={
+ columns=1,
+ at={([xshift=.3em]data bounding box.east)},
+ anchor=east,
+ every legend inside
+ },
+ north inside/.style={
+ rows=1,
+ at={(data bounding box.north)},
+ anchor=north,
+ every legend inside
+ },
+ south inside/.style={
+ rows=1,
+ at={(data bounding box.south)},
+ anchor=south,
+ every legend inside
+ },
+ % Additional inner placements
+ at values/.style={
+ at={(visualization cs:#1)},
+ anchor=center,
+ every legend inside
+ },
+ right of/.style={
+ at={(visualization cs:#1)},
+ anchor=west,
+ every legend inside
+ },
+ left of/.style={
+ at={(visualization cs:#1)},
+ anchor=east,
+ every legend inside
+ },
+ above of/.style={
+ at={(visualization cs:#1)},
+ anchor=south,
+ every legend inside
+ },
+ below of/.style={
+ at={(visualization cs:#1)},
+ anchor=north,
+ every legend inside
+ },
+ above right of/.style={
+ at={(visualization cs:#1)},
+ anchor=south west,
+ every legend inside
+ },
+ above left of/.style={
+ at={(visualization cs:#1)},
+ anchor=south east,
+ every legend inside
+ },
+ below right of/.style={
+ at={(visualization cs:#1)},
+ anchor=north west,
+ every legend inside
+ },
+ below left of/.style={
+ at={(visualization cs:#1)},
+ anchor=north east,
+ every legend inside
+ },
+ %
+ %
%
% Label text styling
%
label style/.style={
- style={/tikz/data visualization/legend entry options/every label
- in legend/.append style={#1}}
+ matrix node style={/tikz/data visualization/every label in legend/.append style={#1}}
},
%
% Styling
%
- style/.style={\tikz@dv@legend/styling/.append style={#1}},
+ matrix node style/.style={\tikz@dv@legend/matrix node styling/.append style={#1}},
}
@@ -1593,30 +1921,30 @@
}
\def\tikz@dv@add@legend@entry#1#2{
- \tikz@main@dv.at start survey({{
+ \tikz@main@dv.at start survey({
\pgfkeysgetvalue{/tikz/data visualization/#1/obj}\pgf@temp
\pgf@temp.add entry(\tikz@dv@render@legend@entry{legend=#1,#2})
- }})
+ })
}
\def\tikz@dv@render@legend@entry#1{
- \pgfkeys{/tikz/data visualization/.cd,
- every visualizer label,
- every visualizer legend label
- }
- \pgfkeys{/tikz/data visualization/legend entry options/.cd,#1}
+ \pgfkeys{/tikz/data visualization/.cd,every data set label}
+ \pgfkeys{/tikz/data visualization/legend entry options/.cd,
+ /tikz/data visualization/every label in legend,#1}%
\pgfkeysgetvalue{/tikz/data visualization/legend entry options/text}\tikz@dv@temp@lab
\pgfkeysgetvalue{/tikz/data visualization/@node styling}\tikz@dv@temp@style
\pgfkeysgetvalue{/tikz/data visualization/legend entry options/setup}\tikz@dv@temp@setup
- \pgfkeysgetvalue{/tikz/data visualization/legend entry options/value visualizer}\tikz@dv@temp@visual
- \pgfkeysgetvalue{/tikz/data visualization/legend entry options/value visualizer styling}\tikz@dv@temp@visual@styling
+ \pgfkeysgetvalue{/tikz/data visualization/legend entry options/visualizer in legend styling}\tikz@dv@temp@visual@styling
\scope[/utils/exec=\expandafter\pgfkeysalso\expandafter{\tikz@dv@temp@setup},
/utils/exec=\pgf@signalstyle.emit()]
\node[/tikz/data visualization/node styling,
/utils/exec=\expandafter\pgfkeysalso\expandafter{\tikz@dv@temp@style}]
{\tikz@dv@pre@height\tikz@dv@temp@lab\tikz@dv@post@height};
\scope[/utils/exec=\expandafter\pgfkeysalso\expandafter{\tikz@dv@temp@visual@styling}]
- \tikz@dv@temp@visual
+ \iftikz@lib@dv@text@only
+ \else
+ \pgfkeysvalueof{/tikz/data visualization/legend entry options/visualizer in legend}
+ \fi
\endscope
\endscope
}
@@ -1633,66 +1961,84 @@
%
text/.initial=,
node style/.style={/tikz/data visualization/node style={#1}},
- legend/.initial=legend,
+ legend/.initial=main legend,
setup/.initial=,
- value visualizer/.initial=,
- value visualizer styling/.initial=,
- value visualizer style/.style={value visualizer styling/.append={,#1}},
- value visualizer macro/.initial=,
+ visualizer in legend/.initial=,
+ visualizer in legend styling/.initial=,
+ visualizer in legend style/.style={visualizer in legend styling/.append={,#1}},
%
% Legend visualizers for plots
%
text right/.style={
node style={anchor=mid west,inner ysep=1pt,inner xsep=0pt,reset cm,xshift=.333em},
- value visualizer style={reset cm},
- value visualizer macro=\tikz@dv@legend@entry@as@example
+ visualizer in legend style={reset cm},
},
text left/.style={
node style={anchor=mid east,inner ysep=1pt,inner xsep=0pt,reset
cm,xshift=-.333em,align=right},
- value visualizer style={reset cm,xscale=-1},
- value visualizer macro=\tikz@dv@legend@entry@as@example
+ visualizer in legend style={reset cm,xscale=-1},
},
text only/.style={
node style={anchor=mid west,inner ysep=1pt,inner xsep=0pt,reset cm,text=visualizer color},
- value visualizer style={},
- value visualizer macro=\relax,
+ /utils/exec=\tikz@lib@dv@text@onlytrue
},
text colored/.style=/tikz/data visualization/text colored,
}
-
+\let\tikz@lib@dv@pin@dir\pgfutil@empty
+\newif\iftikz@lib@dv@text@only
\pgfkeys{
/tikz/data visualization/visualizer options/.cd,
label in legend/.code={\expandafter\tikz@dv@new@label@in@legend@for@visualizer\expandafter{\tikz@visualizer}{#1}},
- label in data/.code=\tikzdatavisualizationset{new label visualizer/.expand once=\expandafter{\tikz@visualizer}{#1}},
- style/.style={/tikz/data visualization/visualizers/\tikz@visualizer/styling/.append style={#1}},
+ label in data/.code=\tikzdatavisualizationset{new label visualizer/.expand once=\expandafter{\tikz@visualizer}{auto,#1}},
+ pin in data/.style={label in data={%
+ node style={%
+ /utils/exec={
+ \ifx\tikz@lib@dv@pin@dir\pgfutil@empty
+ \pgf@process{\pgfpointnormalised{%
+ \pgfpointdiff%
+ {\pgfpointanchor{label visualizer coordinate}{center}}%
+ {\pgfpointanchor{label visualizer coordinate'}{center}}}}%
+ \pgf@x=-\pgf@x\relax%
+ \edef\tikz@lib@dv@temp@rot{\noexpand\pgfqpoint{\the\pgf@y}{\the\pgf@x}}%
+ \tikz@addtransform{\pgftransformshift{\pgfpointscale{\tikz@lib@dv@pin@sign\tikz@pin@distance}{\tikz@lib@dv@temp@rot}}}
+ \else%
+ \tikz@addtransform{\pgftransformshift{\pgfpointpolar{\tikz@lib@dv@pin@dir}{\tikz@lib@dv@pin@sign\tikz@pin@distance}}}
+ \fi%
+ },
+ append after command={
+ \bgroup
+ [current point is local=true]
+ (\tikzlastnode) edge [solid, every pin edge] (label visualizer coordinate)
+ \egroup%
+ }},
+ ,#1}},
+ style/.style={/tikz/data visualization/visualizers/\tikz@visualizer/styling/.append style={,#1}},
+ label in legend options/.style={/tikz/data visualization/visualizers/\tikz@visualizer/label in legend options/.append style={,#1}},
+ ignore style sheets/.style={/tikz/data visualization/visualizers/\tikz@visualizer/signal/.code=,/utils/exec=\advance\tikzdvvisualizercounter by -1\relax},
}
\def\tikz@dv@new@label@in@legend@for@visualizer#1#2{
\tikzdatavisualizationset{
new legend entry={
- every legend entry/.try,
- every label in legend/.try,
- /tikz/data visualization/every label/.try,
+ visualizer in legend style={/tikz/data visualization/visualizers/#1/styling/.try},
+ /tikz/data visualization/every label in legend/.try,
+ /tikz/.cd,
+ every label/.try,
+ /tikz/data visualization/legend entry options/.cd,
+ setup={/data point/set=#1},
+ /tikz/data visualization/visualizers/#1/label in legend options/.try,
#2,
- setup={/data point/visualizer=#1},
- /utils/exec=\pgfkeysgetvalue{/tikz/data visualization/legend entry options/value visualizer macro}\tikz@dv@visualizer@macro,
- value visualizer={
- \scope[/tikz/data visualization/visualizers/#1/styling/.try]
- \def\tikz@visualizer{#1}
- \tikz@dv@visualizer@macro
- \endscope
- }
}
}
}
\def\tikz@dv@legend@entry@as@example{
+ \pgfkeysgetvalue{/data point/set}{\tikz@visualizer}
\pgfkeysvalueof{/data point/\tikz@visualizer/execute at begin}
- \tikz@plot@handler
+ \tikz@dv@plot@handler
\pgfplotstreamstart
- \pgfkeysgetvalue{/tikz/data visualization/label in legend line coordinates}{\tikz@dv@temp}
+ \pgfkeysgetvalue{/tikz/data visualization/legend entry options/label in legend line coordinates}{\tikz@dv@temp}
\foreach \coordinate in \tikz@dv@temp
{ \pgfplotstreampoint{\expandafter\tikz@scan@one@point\expandafter\pgfutil@firstofone\coordinate} }
\pgfplotstreamend
@@ -1700,7 +2046,7 @@
\pgfkeysvalueof{/data point/\tikz@visualizer/execute at begin}
\tikz@dv@plot@mark@maker
\pgfplotstreamstart
- \pgfkeysgetvalue{/tikz/data visualization/label in legend mark coordinates}{\tikz@dv@temp}
+ \pgfkeysgetvalue{/tikz/data visualization/legend entry options/label in legend mark coordinates}{\tikz@dv@temp}
\foreach \coordinate in \tikz@dv@temp
{ \pgfplotstreampoint{\expandafter\tikz@scan@one@point\expandafter\pgfutil@firstofone\coordinate} }
\pgfplotstreamend
@@ -1709,7 +2055,9 @@
\tikzdatavisualizationset{
+ legend entry options/.cd,
label in legend line coordinates/.initial=,
+ label in legend rectangle coordinates/.initial={(-1ex,-.5ex),(-1ex,0.968ex),(0ex,0.968ex),(0ex,-.5ex)},
label in legend mark coordinates/.initial=,
label in legend one mark/.style={
label in legend line coordinates={},
@@ -1720,7 +2068,7 @@
label in legend mark coordinates={(-3ex,-.3ex),(-1.5ex,.3ex),(0,0)},
},
straight label in legend line/.style={
- label in legend line coordinates={(-2em,0),(0,0)},
+ label in legend line coordinates={(-2em,0),(-1.5em,0),(-.5em,0),(0,0)},
label in legend mark coordinates={(-1.5em,0),(-.5em,0)},
},
zig zag label in legend line/.style={
@@ -1730,20 +2078,16 @@
circular label in legend line/.style={
label in legend line coordinates={%
([xshift=-1em]0:.9em and .35ex),%
- ([xshift=-1em]30:.9em and .35ex),%
- ([xshift=-1em]60:.9em and .35ex),%
+ ([xshift=-1em]45:.9em and .35ex),%
([xshift=-1em]90:.9em and .35ex),%
- ([xshift=-1em]120:.9em and .35ex),%
- ([xshift=-1em]150:.9em and .35ex),%
+ ([xshift=-1em]135:.9em and .35ex),%
([xshift=-1em]180:.9em and .35ex),%
- ([xshift=-1em]210:.9em and .35ex),%
- ([xshift=-1em]240:.9em and .35ex),
+ ([xshift=-1em]225:.9em and .35ex),%
([xshift=-1em]270:.9em and .35ex),%
- ([xshift=-1em]300:.9em and .35ex),%
- ([xshift=-1em]330:.9em and .35ex)},
+ ([xshift=-1em]315:.9em and .35ex)},%
label in legend mark coordinates={([xshift=-1em]120:.9em and .35ex),([xshift=-1em]-60:.9em and .35ex)},
},
- gapped circular label in legend line/.style={
+ gap circular label in legend line/.style={
label in legend line coordinates={%
([xshift=-1em,yshift=.2ex]90:1.4ex and 0.9ex),%
([xshift=-1em,yshift=.2ex]162:1.4ex and 0.9ex),%
@@ -1779,30 +2123,40 @@
store=/tikz/data visualization/visualizers/#1,
class=plot handler visualizer,
arg1=#1,
- arg2={\tikz@plot@handler,\tikz@dv@plot@mark@maker}
+ arg2={\tikz@dv@plot@handler,\tikz@dv@plot@mark@maker}
},
new visualizer={#1}{%
every path/.style={draw},
style={every mark/.append style={color=visualizer color}},
- straight line,
+ mark size=2pt,
semithick,
color=visualizer color,
mark=none,
/tikz/data visualization/every visualize as line/.try,
- },
- /data point/visualizer=#1
+ }{visualizer in legend=\tikz@dv@legend@entry@as@example},
+ #1={straight line}
},
visualize as line/.default=line,
visualize as smooth line/.style={
visualize as line={#1},
- #1={style=smooth line}
+ #1={smooth line}
},
visualize as smooth line/.default=line,
visualize as scatter/.style={
- visualize as line={#1},
- #1={style=no lines,
- /tikz/data visualization/every visualize as scatter/.try},
- visualizer style sheet=cross marks
+ new object={
+ when=after survey,
+ store=/tikz/data visualization/visualizers/#1,
+ class=plot handler visualizer,
+ arg1=#1,
+ arg2={\tikz@dv@plot@mark@maker}
+ },
+ new visualizer={#1}{%
+ mark=x,
+ mark size=2pt,
+ style={every mark/.append style={color=visualizer color}},
+ /tikz/data visualization/every visualize as scatter/.try,
+ }{visualizer in legend=\tikz@dv@legend@entry@as@example},
+ #1={no lines}
},
visualize as scatter/.default=scatter
}
@@ -1812,32 +2166,62 @@
\let\tikz@transform=\pgfutil@empty%
\tikzset{solid,shift only,every mark}%
\tikz@options%
- \pgfplothandlermark{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}
+ \ifx\tikz@plot@mark\pgfutil@empty%
+ \pgfplothandlerdiscard
+ \else
+ \pgfplothandlermark{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}
+ \fi
}
+%
+% Rectangle visualizers
+%
+
-% The following needs to be fixed...
\tikzdatavisualizationset{
- new rectangles visualizer/.style={
+ visualize as rectangles/.style={
new object={
+ when=before survey,
store=/tikz/data visualization/visualizers/#1,
class=rectangle visualizer,
- arg1 from key=/tikz/data visualization/#1/attribute 1,
- arg2 from key=/tikz/data visualization/#1/attribute 2,
- arg3=#1/use path
+ arg1=#1
},
- #1/attribute 1/.initial=x,
- #1/attribute 2/.initial=y,
- /data point/#1/use path/.initial=\pgfusepath{stroke},
- /data point/#1/style/.code=\pgfkeysalso{/data point/#1/use path={\path[every rectangles/.try,##1];}}
+ /data point/#1/attribute 1/.initial=x,
+ /data point/#1/attribute 2/.initial=y,
+ new visualizer={#1}{%
+ every path/.style={draw},
+ semithick,
+ color=visualizer color,
+ /tikz/data visualization/every visualize as rectangles/.try,
+ }{visualizer in legend=\tikz@dv@legend@entry@as@rectangle},
+ #1={}
},
- rectangle visualizer/.default=rectangles
+ visualize as rectangles/.default=rectangles,
+ %
+ %
+ %
+ visualizer options/.cd,
+ attribute 1/.style={/data point/\tikz@visualizer/attribute 1=#1},
+ attribute 2/.style={/data point/\tikz@visualizer/attribute 2=#1},
}
+\def\tikz@dv@legend@entry@as@rectangle{
+ \pgfkeysgetvalue{/data point/set}{\tikz@visualizer}
+ \pgfkeysvalueof{/data point/\tikz@visualizer/execute at begin}
+ \pgfplothandlerpolygon
+ \pgfplotstreamstart
+ \pgfkeysgetvalue{/tikz/data visualization/legend entry options/label in legend rectangle coordinates}{\tikz@dv@temp}
+ \foreach \coordinate in \tikz@dv@temp
+ { \pgfplotstreampoint{\expandafter\tikz@scan@one@point\expandafter\pgfutil@firstofone\coordinate} }
+ \pgfplotstreamend
+ \pgfkeysvalueof{/data point/\tikz@visualizer/execute at end}
+}
+
+
%
@@ -1946,7 +2330,7 @@
\pgfdvdeclarestylesheet{strong colors}
{
- default style/.style={black},
+ default style/.style={visualizer color=black},
1/.style={visualizer color=black},
2/.style={visualizer color=red!80!black},
3/.style={visualizer color=blue!80!black},
@@ -1958,13 +2342,30 @@
\pgfdvdeclarestylesheet{cross marks}
{
- default style/.style={mark=x,every mark/.append style=thin,mark size=1.8pt},
- 1/.style={mark=x,every mark/.append style=thin,mark size=1.8pt},
- 2/.style={mark=+,every mark/.append style=thin,mark size=1.8pt},
- 3/.style={mark=Mercedes star,every mark/.append style=thin,mark size=1.8pt},
- 4/.style={mark=Mercedes star flipped,every mark/.append style=thin,mark size=1.8pt},
- 5/.style={mark=star,every mark/.append style=thin,mark size=1.8pt},
- 6/.style={mark=10-pointed star,every mark/.append style={line width=.3pt,mark size=1.6pt}}
+ default style/.style={mark=x,every mark/.append style=thin,mark size=2pt},
+ 1/.style={mark=x,every mark/.append style=thin,mark size=2pt},
+ 2/.style={mark=+,every mark/.append style=thin,mark size=2pt},
+ 3/.style={mark=Mercedes star,every mark/.append style=thin,mark size=2pt},
+ 4/.style={mark=Mercedes star flipped,every mark/.append style=thin,mark size=2pt},
+ 5/.style={mark=star,every mark/.append style=thin,mark size=2pt},
+ 6/.style={mark=10-pointed star,every mark/.append style={line width=.3pt,mark size=1.8pt}}
+}
+
+
+\pgfdvdeclarestylesheet{* mark}
+{
+ default style/.style={mark=*,every mark/.append style=thin,mark size=1.4pt},
+}
+
+\pgfdvdeclarestylesheet{dot mark}
+{
+ default style/.style={mark=*,every mark/.append style=thin,mark size=0.6pt},
+}
+
+
+\pgfdvdeclarestylesheet{o mark}
+{
+ default style/.style={mark=o,every mark/.append style=thin,mark size=1.4pt},
}
@@ -1994,9 +2395,10 @@
}
}
-\tikzdvdeclarestylesheetcolorseries{varying hue}{hsb}{.4,0.9,0.8}{.213,0,0}
+\tikzdvdeclarestylesheetcolorseries{vary hue}{hsb}{.4,0.9,0.8}{.213,0,0}
\tikzdvdeclarestylesheetcolorseries{shades of blue}{hsb}{.65,1.4,1}{0,-.4,-.0}
\tikzdvdeclarestylesheetcolorseries{shades of red}{hsb}{0,1.4,1}{0,-.4,-.0}
+\tikzdvdeclarestylesheetcolorseries{gray scale}{hsb}{0,0,-.34}{0,0,.34}
@@ -2020,7 +2422,7 @@
new Cartesian axis=y axis,
y axis={attribute=y,unit vector={(0cm,1pt)}}
},
- xy axes/.style={x axis={#1},y axis={#1}},
+ Xy axes/.style={x axis={#1},y axis={#1}},
uv Cartesian/.style={
new Cartesian axis=u axis,
u axis={attribute=u,unit vector={(1pt,0cm)}},
@@ -2047,6 +2449,24 @@
+%
+% Create a new axis system
+%
+
+\tikzdatavisualizationset{
+ new axis system/.style n args={4}{
+ #1/.style={
+ #2,
+ #1/.cd,
+ #3,
+ /tikz/data visualization/every #1/.try,
+ ##1,
+ /tikz/data visualization/.cd,
+ #4,
+ }
+ }
+}
+
% The school book axes
%
@@ -2062,56 +2482,67 @@
% instance.
\tikzdatavisualizationset{
- school book axes/.style={
+ new axis system={school book axes}{%
xy Cartesian,
x axis={
- include values=0,
+ include value=0,
+ scaling=0 at 0 and \pgfkeysvalueof{/tikz/data visualization/school book axes/unit} at 1cm,
visualize axis={y axis={goto=0},style=->,padded},
visualize ticks={common={y axis={goto=0},direction axis=y axis},
major={tick text at low,
options at=0 as [{style={draw=none},no tick text}]
}},
visualize grid={common={direction axis=y axis,padded}},
- ticks={step=1},
- padding=0.75em,
- visualize label={visualize x axis label}
+ ticks={step=\pgfkeysvalueof{/tikz/data visualization/school book axes/unit}},
+ padding=0.75em
},
y axis={
- include values=0,
+ include value=0,
+ scaling=0 at 0 and \pgfkeysvalueof{/tikz/data visualization/school book axes/unit} at 1cm,
visualize axis={x axis={goto=0},style=->,padded},
visualize ticks={
common={x axis={goto=0},direction axis=x axis},
major={tick text at low,options at=0 as [{high=0,low=0,style={draw=none},node style={anchor=north east}}]}
},
visualize grid={common={direction axis=x axis,padded}},
- ticks={step=1},
- padding=0.75em,
- visualize label={visualize y axis label}
- },
- school book axes standard labels,
- every school book axes/.try
- }
-}
-
-
-% Possible axis positionings:
-
-\tikzdatavisualizationset{
- %
+ ticks={step=\pgfkeysvalueof{/tikz/data visualization/school book axes/unit}},
+ padding=0.75em
+ }
+ }{%
+ standard labels
+ }{%
+ @make labels
+ },
+ school book axes/.cd,
+ % Possible axis positionings:
+ %
% Place labels at the ends of the axes
- school book axes standard labels/.style={
- visualize x axis label/.style={
- value=padded max,
- y axis={goto=0}
- },
- visualize y axis label/.style={
- value=padded max,
- x axis={goto=0}
+ %
+ standard labels/.style={
+ /tikz/data visualization/@make labels/.style={
+ x axis={
+ visualize label={
+ x axis={goto=padded max, anchor at max},
+ y axis={goto=0}
+ }
+ },
+ y axis={
+ visualize label={
+ y axis={goto=padded max, anchor at max},
+ x axis={goto=0}
+ }
+ }
}
- }
+ },
+ %
+ % Basic unit
+ %
+ unit/.initial=1,
}
+
+
% The scientific axes
%
% The scientific axes is a 2d plot that has a predetermined width and
@@ -2119,154 +2550,163 @@
% this given rectangle.
\tikzdatavisualizationset{
- scientific axes/width/.initial=5cm,
- scientific axes/height/.initial=0.618*\pgfkeysvalueof{/tikz/data visualization/scientific axes/width},% golden ratio...
- scientific axes/.style={
+ new axis system={scientific axes}{%
xy Cartesian,
every axis/.append style={style={draw=black!50}},
every ticks/.append style={style={draw=black!50}},
x axis={
length=\pgfkeysvalueof{/tikz/data visualization/scientific axes/width},
- ticks={some},
- visualize ticks={common={y axis={goto=padded min},direction axis=y axis,high=0pt},major={tick text at low}},
- visualize ticks={common={y axis={goto=padded max},direction axis=y axis,low=0pt}},
- visualize axis={y axis={goto=padded min},padded},
- visualize axis={y axis={goto=padded max},padded},
- visualize grid={common={direction axis=y axis,padded}},
- visualize label=visualize x axis label
+ ticks
},
y axis={
length=\pgfkeysvalueof{/tikz/data visualization/scientific axes/height},
- ticks={some},
- visualize ticks={common={x axis={goto=padded min},direction axis=x axis,high=0pt},major={tick text at low}},
- visualize ticks={common={x axis={goto=padded max},direction axis=x axis,low=0pt}},
- visualize axis={x axis={goto=padded min},padded},
- visualize axis={x axis={goto=padded max},padded},
- visualize grid={common={direction axis=x axis,padded}},
- visualize label=visualize y axis label
- },
- scientific axes standard labels,
- every scientific axes/.try
+ ticks
+ }
+ }{%
+ standard labels,
+ outer ticks,
+ }{%
+ @make axes,
+ @make labels
},
- scientific inner axes/.style={
- xy Cartesian,
- every axis/.append style={style={draw=black!50}},
- every ticks/.append style={style={draw=black!50}},
- x axis={
- length=\pgfkeysvalueof{/tikz/data visualization/scientific axes/width},
- ticks={some},
- visualize ticks={common={y axis={goto=padded min},direction axis=y axis,low=0pt},major={tick text at low}},
- visualize ticks={common={y axis={goto=padded max},direction axis=y axis,high=0pt}},
- visualize axis={y axis={goto=padded min},padded},
- visualize axis={y axis={goto=padded max},padded},
- visualize grid={common={direction axis=y axis,padded}},
- visualize label=visualize x axis label
- },
- y axis={
- length=\pgfkeysvalueof{/tikz/data visualization/scientific axes/height},
- ticks={some},
- visualize ticks={common={x axis={goto=padded min},direction axis=x axis,low=0pt},major={tick text at low}},
- visualize ticks={common={x axis={goto=padded max},direction axis=x axis,high=0pt}},
- visualize axis={x axis={goto=padded min},padded},
- visualize axis={x axis={goto=padded max},padded},
- visualize grid={common={direction axis=x axis,padded}},
- visualize label=visualize y axis label
- },
- scientific axes standard labels,
- every scientific axes/.try
+ scientific axes/.cd,
+ width/.initial=5cm,
+ height/.initial=0.618*\pgfkeysvalueof{/tikz/data visualization/scientific axes/width},% golden ratio...
+ outer ticks/.style={
+ /tikz/data visualization/@make axes/.style={
+ x axis={
+ visualize ticks={common={y axis={goto=padded min},direction axis=y axis,high=0pt},major={tick text at low}},
+ visualize ticks={common={y axis={goto=padded max},direction axis=y axis,low=0pt}},
+ visualize axis={y axis={goto=padded min},padded},
+ visualize axis={y axis={goto=padded max},padded},
+ visualize grid={common={direction axis=y axis,padded}},
+ },
+ y axis={
+ visualize ticks={common={x axis={goto=padded min},direction axis=x axis,high=0pt},major={tick text at low}},
+ visualize ticks={common={x axis={goto=padded max},direction axis=x axis,low=0pt}},
+ visualize axis={x axis={goto=padded min},padded},
+ visualize axis={x axis={goto=padded max},padded},
+ visualize grid={common={direction axis=x axis,padded}},
+ }
+ }
},
- scientific clean axes/.style={
- xy Cartesian,
- x axis={
- length=\pgfkeysvalueof{/tikz/data visualization/scientific axes/width},
- ticks={some},
- visualize ticks={common={y axis={goto=padded min},direction axis=y axis,high=0pt},major={tick text at low}},
- visualize axis={y axis={goto=padded min}},
- visualize grid={common={direction axis=y axis}},
- visualize label=visualize x axis label,
- grid={major={also at=min,also at=max}},
- },
- y axis={
- length=\pgfkeysvalueof{/tikz/data visualization/scientific axes/height},
- ticks={some},
- visualize ticks={common={x axis={goto=padded min},direction axis=x axis,high=0pt},major={tick text at low}},
- visualize axis={x axis={goto=padded min}},
- visualize grid={common={direction axis=x axis}},
- visualize label=visualize y axis label,
- grid={major={also at=min,also at=max}},
- },
- all axes={padding=.5em},
- scientific axes standard labels,
- every scientific axes/.try
+ inner ticks/.style={
+ /tikz/data visualization/@make axes/.style={
+ x axis={
+ visualize ticks={common={y axis={goto=padded min},direction axis=y axis,low=0pt},major={tick text at low}},
+ visualize ticks={common={y axis={goto=padded max},direction axis=y axis,high=0pt}},
+ visualize axis={y axis={goto=padded min},padded},
+ visualize axis={y axis={goto=padded max},padded},
+ visualize grid={common={direction axis=y axis,padded}},
+ },
+ y axis={
+ visualize ticks={common={x axis={goto=padded min},direction axis=x axis,low=0pt},major={tick text at low}},
+ visualize ticks={common={x axis={goto=padded max},direction axis=x axis,high=0pt}},
+ visualize axis={x axis={goto=padded min},padded},
+ visualize axis={x axis={goto=padded max},padded},
+ visualize grid={common={direction axis=x axis,padded}},
+ }
+ }
},
-}
-
-
-
-% Possible axis positionings:
-
-\tikzdatavisualizationset{
+ clean/.style={
+ /tikz/data visualization/@make axes/.style={
+ x axis={
+ visualize ticks={common={y axis={goto=padded min},direction axis=y axis,high=0pt},major={tick text at low}},
+ visualize axis={y axis={goto=padded min}},
+ visualize axis={y axis={goto=min}, style={black!25, line cap=rect}},
+ visualize axis={y axis={goto=max}, style={black!25, line cap=rect}},
+ visualize grid={common={direction axis=y axis}},
+ padding=.5em,
+ },
+ y axis={
+ visualize ticks={common={x axis={goto=padded min},direction axis=x axis,high=0pt},major={tick text at low}},
+ visualize axis={x axis={goto=padded min}},
+ visualize axis={x axis={goto=min}, style={black!25, line cap=rect}},
+ visualize axis={x axis={goto=max}, style={black!25, line cap=rect}},
+ visualize grid={common={direction axis=x axis}},
+ padding=.5em
+ },
+ }
+ },
+ % Possible axis positionings:
%
% Place axes labels below and left, where left label is rotated
%
- scientific axes standard labels/.style={
- visualize x axis label/.style={
- % Horizontal position is middle of axis:
- pos=0.5,
- y axis={goto=padded min},
- % Vertical position comes from bounding box:
- node style={
- at={(0,0 |- data visualization bounding box.south)},
- below
+ standard labels/.style={
+ /tikz/data visualization/@make labels/.style={
+ x axis={
+ visualize label={
+ x axis={goto pos=.5},
+ % Vertical position comes from bounding box:
+ node style={
+ at={(0,0 |- data visualization bounding box.south)},
+ below
+ }
+ }
+ },
+ y axis={
+ visualize label={
+ y axis={goto pos=.5},
+ % Horizontal position comes from bounding box:
+ node style={
+ at={(0,0 -| data visualization bounding box.west)},
+ rotate=90,
+ above}
+ }
}
- },
- visualize y axis label/.style={%
- % Vertical position is middle of axis:
- pos=0.5,
- x axis={goto=padded min},
- % Horizontal position comes from bounding box:
- node style={
- at={(0,0 -| data visualization bounding box.west)},
- rotate=90,
- above}
}
},
%
% Place axes labels below and left, no rotation
%
- scientific axes upright labels/.style={
- scientific axes standard labels,
- visualize y axis label/.style={%
- % Vertical position is middle of axis:
- pos=0.5,
- x axis={goto=padded min},
- % Horizontal position comes from bounding box:
- node style={
- at={(0,0 -| data visualization bounding box.west)},
- left
+ upright labels/.style={
+ /tikz/data visualization/@make labels/.style={
+ x axis={
+ visualize label={
+ x axis={goto pos=.5},
+ % Vertical position comes from bounding box:
+ node style={
+ at={(0,0 |- data visualization bounding box.south)},
+ below
+ }
+ }
+ },
+ y axis={
+ visualize label={
+ y axis={goto pos=.5},
+ % Horizontal position comes from bounding box:
+ node style={
+ at={(0,0 -| data visualization bounding box.west)},
+ left
+ }
+ }
}
}
},
%
% Place axes at the ends of the axes
%
- scientific axes end labels/.style={
- visualize x axis label/.style={
- value=max,
- y axis={goto=padded min},
- % Vertical position comes from bounding box:
- node style={
- at={(0,0 -| data visualization bounding box.east)},
- right
- }
- },
- visualize y axis label/.style={
- value=max,
- x axis={goto=padded min},
- % Horizontal position comes from bounding box:
- node style={
- at={(0,0 |- data visualization bounding box.north)},
- above
+ end labels/.style={
+ /tikz/data visualization/@make labels/.style={
+ x axis={
+ visualize label={
+ y axis={goto=padded min},
+ % Vertical position comes from bounding box:
+ node style={
+ at={(0,0 -| data visualization bounding box.east)},
+ right
+ }
+ }
+ },
+ y axis={
+ visualize label={
+ x axis={goto=padded min},
+ % Horizontal position comes from bounding box:
+ node style={
+ at={(0,0 |- data visualization bounding box.north)},
+ above
+ }
+ }
}
}
}