Die einfachste Methode, das ganze elliptisch zu bekommen, besteht darin, für die x- und die y-Richtung unterschiedliche Skalierungsfaktoren zu verwenden, beispielsweise:
\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage{translator}
\usepackage{tikz}
\usetikzlibrary{calendar,shadings}
\renewcommand*{\familydefault}{\sfdefault}
\colorlet{winter}{blue}
\colorlet{spring}{green!60!black}
\colorlet{summer}{orange}
\colorlet{fall}{red}
% A counter, since TikZ is not clever enough (yet) to handle
% arbitrary angle systems.
\newcount\mycount
\begin{document}
\pagestyle{empty}
\year=2016 %Jahr festlegen
\begin{tikzpicture}[xscale=1.2,yscale=1.6,
remember picture,overlay,shift={(current page.center)},
transform shape,
every day/.style={anchor=mid,node font=\tiny,minimum width=1ex}]
\node[draw, densely dashed, circle,shading=radial,outer color=lightgray,inner color=white,
minimum width=15cm] {\textcolor{blue!80!black}{\Huge\the\year}};
\foreach \month/\monthcolor in
{1/winter,2/winter,3/spring,4/spring,5/spring,6/summer,
7/summer,8/summer,9/fall,10/fall,11/fall,12/winter} {
% Computer angle:
\mycount=\month
\advance\mycount by -1
\multiply\mycount by 30
\advance\mycount by -90
\shadedraw[shading=radial,outer color=\monthcolor!30,middle color=white,
inner color=white,draw=none] (\the\mycount:5.4cm) circle(1.4cm);
% The actual calendar
\calendar at (\the\mycount:5.4cm) [
dates=\the\year-\month-01 to \the\year-\month-last,
day code={%
\path node[every day]{\tikzdaytext}+(180+\the\mycount:0.22)
node[every day,scale=.75]{\pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}};
}
]
if (day of month=1) {{\color{\monthcolor!50!black}\tikzmonthcode}}
if (Sunday) [red]
if (all) {
% Again, compute angle
\mycount=1
\advance\mycount by -\pgfcalendarcurrentday
\multiply\mycount by 11
\advance\mycount by 90
\pgftransformshift{\pgfpointpolar{\mycount}{1.23cm}}};
}
\end{tikzpicture}
\end{document}
![Ellipse hochkant][1]
oder
\documentclass[landscape,ngerman]{article}
\usepackage{babel}
\usepackage{translator}
\usepackage{tikz}
\usetikzlibrary{calendar,shadings}
\renewcommand*{\familydefault}{\sfdefault}
\colorlet{winter}{blue}
\colorlet{spring}{green!60!black}
\colorlet{summer}{orange}
\colorlet{fall}{red}
% A counter, since TikZ is not clever enough (yet) to handle
% arbitrary angle systems.
\newcount\mycount
\begin{document}
\pagestyle{empty}
\year=2016 %Jahr festlegen
\begin{tikzpicture}[yscale=1.2,xscale=1.6,
remember picture,overlay,shift={(current page.center)},
transform shape,
every day/.style={anchor=mid,node font=\tiny,minimum width=1ex}]
\node[draw, densely dashed, circle,shading=radial,outer color=lightgray,inner color=white,
minimum width=15cm] {\textcolor{blue!80!black}{\Huge\the\year}};
\foreach \month/\monthcolor in
{1/winter,2/winter,3/spring,4/spring,5/spring,6/summer,
7/summer,8/summer,9/fall,10/fall,11/fall,12/winter} {
% Computer angle:
\mycount=\month
\advance\mycount by -1
\multiply\mycount by 30
\advance\mycount by -90
\shadedraw[shading=radial,outer color=\monthcolor!30,middle color=white,
inner color=white,draw=none] (\the\mycount:5.4cm) circle(1.4cm);
% The actual calendar
\calendar at (\the\mycount:5.4cm) [
dates=\the\year-\month-01 to \the\year-\month-last,
day code={%
\path node[every day]{\tikzdaytext}+(180+\the\mycount:0.22)
node[every day,scale=.75]{\pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}};
}
]
if (day of month=1) {{\color{\monthcolor!50!black}\tikzmonthcode}}
if (Sunday) [red]
if (all) {
% Again, compute angle
\mycount=1
\advance\mycount by -\pgfcalendarcurrentday
\multiply\mycount by 11
\advance\mycount by 90
\pgftransformshift{\pgfpointpolar{\mycount}{1.23cm}}};
}
\end{tikzpicture}
\end{document}
![Ellipse quer][2]
Will man hingegen für die Monate weiterhin Kreise verwenden und lediglich den Hintergrund elliptisch haben, so muss man einige zusätzliche Berechnungen anstellen:
\documentclass[landscape,ngerman]{article}
\usepackage{babel}
\usepackage{translator}
\usepackage{tikz}
\usetikzlibrary{calendar,shadings}
\renewcommand*{\familydefault}{\sfdefault}
\colorlet{winter}{blue}
\colorlet{spring}{green!60!black}
\colorlet{summer}{orange}
\colorlet{fall}{red}
% A counter, since TikZ is not clever enough (yet) to handle
% arbitrary angle systems.
\newcount\mycount
\newlength\mylength
\begin{document}
\pagestyle{empty}
\year=2016 %Jahr festlegen
\begin{tikzpicture}[scale=1.35,
remember picture,overlay,shift={(current page.center)},
transform shape,
every day/.style={anchor=mid,node font=\tiny,minimum width=1ex}]
\node[xscale=1.2,draw, densely dashed, circle,shading=radial,outer color=lightgray,inner color=white,
minimum width=15cm] {\textcolor{blue!80!black}{\Huge\the\year}};
\foreach \month/\monthcolor in
{1/winter,2/winter,3/spring,4/spring,5/spring,6/summer,
7/summer,8/summer,9/fall,10/fall,11/fall,12/winter} {
% Computer angle:
\mycount=\month
\advance\mycount by -1
\multiply\mycount by 30
\advance\mycount by -90
\pgfmathparse{(abs(sin((\month-1)*30))*0.2+1}
\shadedraw[shading=radial,outer color=\monthcolor!30,middle color=white,
inner color=white,draw=none] (\the\mycount:\pgfmathresult*5.4) circle(1.4cm);
% The actual calendar
\setlength{\mylength}{\pgfmathresult\dimexpr 5.4cm\relax}
\calendar at (\the\mycount:\mylength) [
dates=\the\year-\month-01 to \the\year-\month-last,
day code={%
\path node[every day]{\tikzdaytext}+(180+\the\mycount:0.22)
node[every day,scale=.75]{\pgfcalendarweekdayshortname{\pgfcalendarcurrentweekday}};
}
]
if (day of month=1) {{\color{\monthcolor!50!black}\tikzmonthcode}}
if (Sunday) [red]
if (all) {
% Again, compute angle
\mycount=1
\advance\mycount by -\pgfcalendarcurrentday
\multiply\mycount by 11
\advance\mycount by 90
\pgftransformshift{\pgfpointpolar{\mycount}{1.23cm}}};
}
\end{tikzpicture}
\end{document}
![Kreise in einer Ellipse][3]
[1]: http://texwelt.de/wissen/upfiles/test17_2.png
[2]: http://texwelt.de/wissen/upfiles/test18_2.pnghttp://texwelt.de/wissen/upfiles/test18_2.png
[3]: http://texwelt.de/wissen/upfiles/test19_2.png