copy and scale one figure (wheel)How to properly smuggle (with or even without TikZ)?custom colour wheelHow can I nest multiple groups of nodes with the tikz package?drawing figure to scalewheel of emotions with tikzUsing more than one scale in the tikz documentChange TikZ Scale for One PathHow to draw timing wheelscale bar figure - showing scale with citationsDraw a shaded wheel in TikzDraw Life WheelA wheel-like figurecustom colour wheel
Translation of Scottish 16th century church stained glass
Flux received by a negative charge
Some numbers are more equivalent than others
Aligning individual characters/glyphs like a monospace font
What linear sensor for a keyboard?
Folder comparison
Engineer refusing to file/disclose patents
On a tidally locked planet, would time be quantized?
Have I saved too much for retirement so far?
How can Trident be so inexpensive? Will it orbit Triton or just do a (slow) flyby?
How can "mimic phobia" be cured or prevented?
Bob has never been a M before
ArcGIS not connecting to PostgreSQL db with all upper-case name
Are all species of CANNA edible?
Can I sign legal documents with a smiley face?
Did US corporations pay demonstrators in the German demonstrations against article 13?
Can someone explain how this makes sense electrically?
Customize circled numbers
Query about absorption line spectra
How do you respond to a colleague from another team when they're wrongly expecting that you'll help them?
What's the difference between 違法 and 不法?
Do Legal Documents Require Signing In Standard Pen Colors?
Are lightweight LN wallets vulnerable to transaction withholding?
Could the E-bike drivetrain wear down till needing replacement after 400 km?
copy and scale one figure (wheel)
How to properly smuggle (with or even without TikZ)?custom colour wheelHow can I nest multiple groups of nodes with the tikz package?drawing figure to scalewheel of emotions with tikzUsing more than one scale in the tikz documentChange TikZ Scale for One PathHow to draw timing wheelscale bar figure - showing scale with citationsDraw a shaded wheel in TikzDraw Life WheelA wheel-like figurecustom colour wheel
i want continues in previous post: custom colour wheel
This Minimal Code:
documentclassarticle
usepackage[a5paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
How can i clone and scale this wheel (bigger/smaller) and put copy in same page with some other image/text?
Thanks
tikz-pgf
add a comment |
i want continues in previous post: custom colour wheel
This Minimal Code:
documentclassarticle
usepackage[a5paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
How can i clone and scale this wheel (bigger/smaller) and put copy in same page with some other image/text?
Thanks
tikz-pgf
add a comment |
i want continues in previous post: custom colour wheel
This Minimal Code:
documentclassarticle
usepackage[a5paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
How can i clone and scale this wheel (bigger/smaller) and put copy in same page with some other image/text?
Thanks
tikz-pgf
i want continues in previous post: custom colour wheel
This Minimal Code:
documentclassarticle
usepackage[a5paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
How can i clone and scale this wheel (bigger/smaller) and put copy in same page with some other image/text?
Thanks
tikz-pgf
tikz-pgf
edited yesterday
latexforti
asked yesterday
latexfortilatexforti
3917
3917
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
When I wrote my life wheel answer, which you are using here but not linking to, I did that precisely in order to remove the vast number of arguments in favor of pgf keys. The only things that were not moved to the pgf keys were the image list and the texts. Other than that there is nothing that prevents you from using the LifeWheel
command with a minimal number of arguments, you can set all the defaults in the pgf keys.
To simplify matter even further,
- I moved the list of images also to the pgf keys, and
- made the
decorations.text
susceptible to the scale of the ambienttikzpicture
since otherwise, as noted by Joule V, these texts do not get scaled properly.
With these changes, drawing a simple life wheel boils down to
tikzLifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
but I stress that before that all you needed to do is to add the list of figures, so the command was not much longer. With the above-mentioned changes, now it scales properly, i.e. you could do something like
tikz[scale=0.5,transform shape]LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
Setting the defaults is (and was) as simple as saying
tikzsetlife wheel/.cd,
radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green",
img list="example-image-a","example-image-a","example-image-b","example-image-c"
Let me mention that, while there is nothing wrong with a scalebox
, I am not a big fan of it, see e.g. here for more details. Of course, if you are absolutely sure you do not want to access the nodes later, you will be fine.
documentclassarticle
usepackage[a5paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=,
img list/.initial="example-image-a","example-image-a","example-image-b","example-image-c"
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[2][]%pgfkeys/tikz/life wheel/img list=#2%defimglst#2
tikzsetlife wheel/.cd,#1
pgfgettransformentriesmysfxtmptmpmysfytmptmp
pgfmathtruncatemacromyfsxmysfx*24 % decoration text
pgfmathtruncatemacromyfsymysfy*24 % font scaling
edefimglstpgfkeysvalueof/tikz/life wheel/img list
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in imglst
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #2
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #2%
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
begindocument
% this defines all your default parameters. Of course, you can change them at any time.
tikzsetlife wheel/.cd,
radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green",
img list="example-image-a","example-image-a","example-image-b","example-image-c"
% drawing the actual life wheel is as simple as
begintikzpicture[font=Large,scale=1]
LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
endtikzpicture%
~begintikzpicture[font=Large,scale=0.5,transform shape]
LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
endtikzpicture
enddocument
1
thank so much. in my above post is linked to old topic that use your code. thanks
– latexforti
yesterday
1
@latexforti Yes, but this worked with none of theLifeWheel
versions. This is because these texts are passed todecorations.text
. So what you can do is to sayLifeWeelsmall/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
where the notation|small|
is the one that is appropriate todecorations.text
. Probablysmall
is too small and you want to do something likeLifeWeelfontsize1616selectfont/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
.
– marmot
yesterday
add a comment |
Like this – when I changed scale=1
to scale=0.5
? (I changed to a4paper
so to have more space for big figures.)
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
begintikzpicture[
% Environment Cfg
font=Large,
scale=0.5,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
Hmm, the text size of the smaller figure is not good. I think scalebox
is better
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
scalebox0.5begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
In case you need a macro
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors %
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2 %
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3 %
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
%%%%%%%%%%%%%%%%
newcommandyourcmd[4]%
scalebox#1begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
LifeWeel[#2]#3#4
endtikzpicture
begindocument
yourcmd
0.5
radius=5,outer image radius=0.4,colors="red","blue","magenta","purple","orange","green"
"example-image-a","example-image-a","example-image-b","example-image-c"
A/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
yourcmd
1
radius=5,outer image radius=0.4,colors="red","blue","magenta","purple","orange","green"
"example-image-a","example-image-a","example-image-b","example-image-c"
A/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
enddocument
thank so much. Can you edit and definition this wheel before begindocument and in body you can call this definition and scale...if i copy and create 10 wheels in body so the code is very long,thanks
– latexforti
yesterday
1
@latexforti See my edited answer.
– JouleV
yesterday
3
The purpose of all thattikzset
stuff is precisely that you do not have to carry it around. You could (at least) simplify your command tonewcommandyourcmd[4]% scalebox#1begintikzpicture[font=Large,scale=1] LifeWeel[#2]#3#4endtikzpicture
and saytikzsetlife wheel/.cd, ...
only once.
– marmot
yesterday
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "85"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f481071%2fcopy-and-scale-one-figure-wheel%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
When I wrote my life wheel answer, which you are using here but not linking to, I did that precisely in order to remove the vast number of arguments in favor of pgf keys. The only things that were not moved to the pgf keys were the image list and the texts. Other than that there is nothing that prevents you from using the LifeWheel
command with a minimal number of arguments, you can set all the defaults in the pgf keys.
To simplify matter even further,
- I moved the list of images also to the pgf keys, and
- made the
decorations.text
susceptible to the scale of the ambienttikzpicture
since otherwise, as noted by Joule V, these texts do not get scaled properly.
With these changes, drawing a simple life wheel boils down to
tikzLifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
but I stress that before that all you needed to do is to add the list of figures, so the command was not much longer. With the above-mentioned changes, now it scales properly, i.e. you could do something like
tikz[scale=0.5,transform shape]LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
Setting the defaults is (and was) as simple as saying
tikzsetlife wheel/.cd,
radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green",
img list="example-image-a","example-image-a","example-image-b","example-image-c"
Let me mention that, while there is nothing wrong with a scalebox
, I am not a big fan of it, see e.g. here for more details. Of course, if you are absolutely sure you do not want to access the nodes later, you will be fine.
documentclassarticle
usepackage[a5paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=,
img list/.initial="example-image-a","example-image-a","example-image-b","example-image-c"
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[2][]%pgfkeys/tikz/life wheel/img list=#2%defimglst#2
tikzsetlife wheel/.cd,#1
pgfgettransformentriesmysfxtmptmpmysfytmptmp
pgfmathtruncatemacromyfsxmysfx*24 % decoration text
pgfmathtruncatemacromyfsymysfy*24 % font scaling
edefimglstpgfkeysvalueof/tikz/life wheel/img list
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in imglst
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #2
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #2%
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
begindocument
% this defines all your default parameters. Of course, you can change them at any time.
tikzsetlife wheel/.cd,
radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green",
img list="example-image-a","example-image-a","example-image-b","example-image-c"
% drawing the actual life wheel is as simple as
begintikzpicture[font=Large,scale=1]
LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
endtikzpicture%
~begintikzpicture[font=Large,scale=0.5,transform shape]
LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
endtikzpicture
enddocument
1
thank so much. in my above post is linked to old topic that use your code. thanks
– latexforti
yesterday
1
@latexforti Yes, but this worked with none of theLifeWheel
versions. This is because these texts are passed todecorations.text
. So what you can do is to sayLifeWeelsmall/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
where the notation|small|
is the one that is appropriate todecorations.text
. Probablysmall
is too small and you want to do something likeLifeWeelfontsize1616selectfont/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
.
– marmot
yesterday
add a comment |
When I wrote my life wheel answer, which you are using here but not linking to, I did that precisely in order to remove the vast number of arguments in favor of pgf keys. The only things that were not moved to the pgf keys were the image list and the texts. Other than that there is nothing that prevents you from using the LifeWheel
command with a minimal number of arguments, you can set all the defaults in the pgf keys.
To simplify matter even further,
- I moved the list of images also to the pgf keys, and
- made the
decorations.text
susceptible to the scale of the ambienttikzpicture
since otherwise, as noted by Joule V, these texts do not get scaled properly.
With these changes, drawing a simple life wheel boils down to
tikzLifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
but I stress that before that all you needed to do is to add the list of figures, so the command was not much longer. With the above-mentioned changes, now it scales properly, i.e. you could do something like
tikz[scale=0.5,transform shape]LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
Setting the defaults is (and was) as simple as saying
tikzsetlife wheel/.cd,
radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green",
img list="example-image-a","example-image-a","example-image-b","example-image-c"
Let me mention that, while there is nothing wrong with a scalebox
, I am not a big fan of it, see e.g. here for more details. Of course, if you are absolutely sure you do not want to access the nodes later, you will be fine.
documentclassarticle
usepackage[a5paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=,
img list/.initial="example-image-a","example-image-a","example-image-b","example-image-c"
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[2][]%pgfkeys/tikz/life wheel/img list=#2%defimglst#2
tikzsetlife wheel/.cd,#1
pgfgettransformentriesmysfxtmptmpmysfytmptmp
pgfmathtruncatemacromyfsxmysfx*24 % decoration text
pgfmathtruncatemacromyfsymysfy*24 % font scaling
edefimglstpgfkeysvalueof/tikz/life wheel/img list
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in imglst
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #2
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #2%
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
begindocument
% this defines all your default parameters. Of course, you can change them at any time.
tikzsetlife wheel/.cd,
radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green",
img list="example-image-a","example-image-a","example-image-b","example-image-c"
% drawing the actual life wheel is as simple as
begintikzpicture[font=Large,scale=1]
LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
endtikzpicture%
~begintikzpicture[font=Large,scale=0.5,transform shape]
LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
endtikzpicture
enddocument
1
thank so much. in my above post is linked to old topic that use your code. thanks
– latexforti
yesterday
1
@latexforti Yes, but this worked with none of theLifeWheel
versions. This is because these texts are passed todecorations.text
. So what you can do is to sayLifeWeelsmall/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
where the notation|small|
is the one that is appropriate todecorations.text
. Probablysmall
is too small and you want to do something likeLifeWeelfontsize1616selectfont/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
.
– marmot
yesterday
add a comment |
When I wrote my life wheel answer, which you are using here but not linking to, I did that precisely in order to remove the vast number of arguments in favor of pgf keys. The only things that were not moved to the pgf keys were the image list and the texts. Other than that there is nothing that prevents you from using the LifeWheel
command with a minimal number of arguments, you can set all the defaults in the pgf keys.
To simplify matter even further,
- I moved the list of images also to the pgf keys, and
- made the
decorations.text
susceptible to the scale of the ambienttikzpicture
since otherwise, as noted by Joule V, these texts do not get scaled properly.
With these changes, drawing a simple life wheel boils down to
tikzLifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
but I stress that before that all you needed to do is to add the list of figures, so the command was not much longer. With the above-mentioned changes, now it scales properly, i.e. you could do something like
tikz[scale=0.5,transform shape]LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
Setting the defaults is (and was) as simple as saying
tikzsetlife wheel/.cd,
radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green",
img list="example-image-a","example-image-a","example-image-b","example-image-c"
Let me mention that, while there is nothing wrong with a scalebox
, I am not a big fan of it, see e.g. here for more details. Of course, if you are absolutely sure you do not want to access the nodes later, you will be fine.
documentclassarticle
usepackage[a5paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=,
img list/.initial="example-image-a","example-image-a","example-image-b","example-image-c"
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[2][]%pgfkeys/tikz/life wheel/img list=#2%defimglst#2
tikzsetlife wheel/.cd,#1
pgfgettransformentriesmysfxtmptmpmysfytmptmp
pgfmathtruncatemacromyfsxmysfx*24 % decoration text
pgfmathtruncatemacromyfsymysfy*24 % font scaling
edefimglstpgfkeysvalueof/tikz/life wheel/img list
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in imglst
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #2
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #2%
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
begindocument
% this defines all your default parameters. Of course, you can change them at any time.
tikzsetlife wheel/.cd,
radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green",
img list="example-image-a","example-image-a","example-image-b","example-image-c"
% drawing the actual life wheel is as simple as
begintikzpicture[font=Large,scale=1]
LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
endtikzpicture%
~begintikzpicture[font=Large,scale=0.5,transform shape]
LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
endtikzpicture
enddocument
When I wrote my life wheel answer, which you are using here but not linking to, I did that precisely in order to remove the vast number of arguments in favor of pgf keys. The only things that were not moved to the pgf keys were the image list and the texts. Other than that there is nothing that prevents you from using the LifeWheel
command with a minimal number of arguments, you can set all the defaults in the pgf keys.
To simplify matter even further,
- I moved the list of images also to the pgf keys, and
- made the
decorations.text
susceptible to the scale of the ambienttikzpicture
since otherwise, as noted by Joule V, these texts do not get scaled properly.
With these changes, drawing a simple life wheel boils down to
tikzLifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
but I stress that before that all you needed to do is to add the list of figures, so the command was not much longer. With the above-mentioned changes, now it scales properly, i.e. you could do something like
tikz[scale=0.5,transform shape]LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
Setting the defaults is (and was) as simple as saying
tikzsetlife wheel/.cd,
radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green",
img list="example-image-a","example-image-a","example-image-b","example-image-c"
Let me mention that, while there is nothing wrong with a scalebox
, I am not a big fan of it, see e.g. here for more details. Of course, if you are absolutely sure you do not want to access the nodes later, you will be fine.
documentclassarticle
usepackage[a5paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=,
img list/.initial="example-image-a","example-image-a","example-image-b","example-image-c"
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[2][]%pgfkeys/tikz/life wheel/img list=#2%defimglst#2
tikzsetlife wheel/.cd,#1
pgfgettransformentriesmysfxtmptmpmysfytmptmp
pgfmathtruncatemacromyfsxmysfx*24 % decoration text
pgfmathtruncatemacromyfsymysfy*24 % font scaling
edefimglstpgfkeysvalueof/tikz/life wheel/img list
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in imglst
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #2
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #2%
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
begindocument
% this defines all your default parameters. Of course, you can change them at any time.
tikzsetlife wheel/.cd,
radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green",
img list="example-image-a","example-image-a","example-image-b","example-image-c"
% drawing the actual life wheel is as simple as
begintikzpicture[font=Large,scale=1]
LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
endtikzpicture%
~begintikzpicture[font=Large,scale=0.5,transform shape]
LifeWeelA/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
endtikzpicture
enddocument
answered yesterday
marmotmarmot
111k5140264
111k5140264
1
thank so much. in my above post is linked to old topic that use your code. thanks
– latexforti
yesterday
1
@latexforti Yes, but this worked with none of theLifeWheel
versions. This is because these texts are passed todecorations.text
. So what you can do is to sayLifeWeelsmall/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
where the notation|small|
is the one that is appropriate todecorations.text
. Probablysmall
is too small and you want to do something likeLifeWeelfontsize1616selectfont/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
.
– marmot
yesterday
add a comment |
1
thank so much. in my above post is linked to old topic that use your code. thanks
– latexforti
yesterday
1
@latexforti Yes, but this worked with none of theLifeWheel
versions. This is because these texts are passed todecorations.text
. So what you can do is to sayLifeWeelsmall/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
where the notation|small|
is the one that is appropriate todecorations.text
. Probablysmall
is too small and you want to do something likeLifeWeelfontsize1616selectfont/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
.
– marmot
yesterday
1
1
thank so much. in my above post is linked to old topic that use your code. thanks
– latexforti
yesterday
thank so much. in my above post is linked to old topic that use your code. thanks
– latexforti
yesterday
1
1
@latexforti Yes, but this worked with none of the
LifeWheel
versions. This is because these texts are passed to decorations.text
. So what you can do is to say LifeWeelsmall/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
where the notation |small|
is the one that is appropriate to decorations.text
. Probably small
is too small and you want to do something like LifeWeelfontsize1616selectfont/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
.– marmot
yesterday
@latexforti Yes, but this worked with none of the
LifeWheel
versions. This is because these texts are passed to decorations.text
. So what you can do is to say LifeWeelsmall/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
where the notation |small|
is the one that is appropriate to decorations.text
. Probably small
is too small and you want to do something like LifeWeelfontsize1616selectfont/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10,
.– marmot
yesterday
add a comment |
Like this – when I changed scale=1
to scale=0.5
? (I changed to a4paper
so to have more space for big figures.)
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
begintikzpicture[
% Environment Cfg
font=Large,
scale=0.5,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
Hmm, the text size of the smaller figure is not good. I think scalebox
is better
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
scalebox0.5begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
In case you need a macro
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors %
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2 %
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3 %
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
%%%%%%%%%%%%%%%%
newcommandyourcmd[4]%
scalebox#1begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
LifeWeel[#2]#3#4
endtikzpicture
begindocument
yourcmd
0.5
radius=5,outer image radius=0.4,colors="red","blue","magenta","purple","orange","green"
"example-image-a","example-image-a","example-image-b","example-image-c"
A/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
yourcmd
1
radius=5,outer image radius=0.4,colors="red","blue","magenta","purple","orange","green"
"example-image-a","example-image-a","example-image-b","example-image-c"
A/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
enddocument
thank so much. Can you edit and definition this wheel before begindocument and in body you can call this definition and scale...if i copy and create 10 wheels in body so the code is very long,thanks
– latexforti
yesterday
1
@latexforti See my edited answer.
– JouleV
yesterday
3
The purpose of all thattikzset
stuff is precisely that you do not have to carry it around. You could (at least) simplify your command tonewcommandyourcmd[4]% scalebox#1begintikzpicture[font=Large,scale=1] LifeWeel[#2]#3#4endtikzpicture
and saytikzsetlife wheel/.cd, ...
only once.
– marmot
yesterday
add a comment |
Like this – when I changed scale=1
to scale=0.5
? (I changed to a4paper
so to have more space for big figures.)
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
begintikzpicture[
% Environment Cfg
font=Large,
scale=0.5,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
Hmm, the text size of the smaller figure is not good. I think scalebox
is better
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
scalebox0.5begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
In case you need a macro
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors %
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2 %
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3 %
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
%%%%%%%%%%%%%%%%
newcommandyourcmd[4]%
scalebox#1begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
LifeWeel[#2]#3#4
endtikzpicture
begindocument
yourcmd
0.5
radius=5,outer image radius=0.4,colors="red","blue","magenta","purple","orange","green"
"example-image-a","example-image-a","example-image-b","example-image-c"
A/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
yourcmd
1
radius=5,outer image radius=0.4,colors="red","blue","magenta","purple","orange","green"
"example-image-a","example-image-a","example-image-b","example-image-c"
A/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
enddocument
thank so much. Can you edit and definition this wheel before begindocument and in body you can call this definition and scale...if i copy and create 10 wheels in body so the code is very long,thanks
– latexforti
yesterday
1
@latexforti See my edited answer.
– JouleV
yesterday
3
The purpose of all thattikzset
stuff is precisely that you do not have to carry it around. You could (at least) simplify your command tonewcommandyourcmd[4]% scalebox#1begintikzpicture[font=Large,scale=1] LifeWeel[#2]#3#4endtikzpicture
and saytikzsetlife wheel/.cd, ...
only once.
– marmot
yesterday
add a comment |
Like this – when I changed scale=1
to scale=0.5
? (I changed to a4paper
so to have more space for big figures.)
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
begintikzpicture[
% Environment Cfg
font=Large,
scale=0.5,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
Hmm, the text size of the smaller figure is not good. I think scalebox
is better
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
scalebox0.5begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
In case you need a macro
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors %
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2 %
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3 %
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
%%%%%%%%%%%%%%%%
newcommandyourcmd[4]%
scalebox#1begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
LifeWeel[#2]#3#4
endtikzpicture
begindocument
yourcmd
0.5
radius=5,outer image radius=0.4,colors="red","blue","magenta","purple","orange","green"
"example-image-a","example-image-a","example-image-b","example-image-c"
A/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
yourcmd
1
radius=5,outer image radius=0.4,colors="red","blue","magenta","purple","orange","green"
"example-image-a","example-image-a","example-image-b","example-image-c"
A/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
enddocument
Like this – when I changed scale=1
to scale=0.5
? (I changed to a4paper
so to have more space for big figures.)
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
begintikzpicture[
% Environment Cfg
font=Large,
scale=0.5,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
Hmm, the text size of the smaller figure is not good. I think scalebox
is better
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
begindocument
scalebox0.5begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
% lifeweel from many codes arround TEX.SE
%Variables: 1:images, 2:image 3:number of features 4: Feature_name/quantity
% 5: anchor aling 6: numbers position 7:Relative position 8:ID
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
% This function draws the lifeweel
%LifeWeelfigureslist of features in the form feature_name/quantity
LifeWeel[radius=5,outer image radius=0.4,%
colors="red","blue","magenta","purple","orange","green"
]"example-image-a","example-image-a","example-image-b","example-image-c"%
A/10,
B/10,
C/10,
D/10,
E/10,
F/10,
G/10,
H/10
endtikzpicture
enddocument
In case you need a macro
documentclassarticle
usepackage[a4paper,landscape,left=1.0cm,right=0.3cm,top=0.5cm,bottom=0.5cm]geometry
usepackagexcolor
usepackagetikz
usetikzlibrarydecorations.text,shadings
renewcommand*familydefaultsfdefault % Set font to serif family
% smuggling from https://tex.stackexchange.com/a/470979/121799
newcountersmuggle
DeclareRobustCommandsmuggleone[1]%
stepcountersmuggle%
expandafterglobalexpandafterletcsname smuggle@arabicsmuggleendcsname#1%
aftergroupletaftergroup#1expandafteraftergroupcsname smuggle@arabicsmuggleendcsname
DeclareRobustCommandsmuggle[2][1]%
smuggleone#2%
ifnum#1>1
aftergroupsmuggleaftergroup[expandafteraftergroupthenumexpr#1-1aftergroup]aftergroup#2%
fi
newcommandLifeWeel[3][]%
defimglst#2
tikzsetlife wheel/.cd,#1
edefLstColorspgfkeysvalueof/tikz/life wheel/colors
edefNumColors0
foreach X [count=Y starting from 1] in LstColors %
edefNumColorsY
smuggle[2]NumColors
foreach X [count=Y starting from 0] in #2 %
edefNumImagesY
smuggle[2]NumImages
foreach X [count=Y] in #3 %
edefNumFeaturesY
smuggle[2]NumFeatures
%Drawing the border
draw[life wheel/Border] (0,0) circle [radius=pgfkeysvalueof/tikz/life wheel/radius];
%Drawing features separations.
ifnumNumColors>1
foreach m [count=i] in 1,...,NumFeatures
pgfmathtruncatemacromyimod(i-1,NumColors)
pgfmathsetmacromycolorLstColors[myi]
draw[life wheel/Separator,top color=mycolor!75!black,
bottom color=mycolor,shading angle=-90+(360/NumFeatures)*(i-0.5)] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius)
arc((360/NumFeatures)*i:(360/NumFeatures)*(i-1):pgfkeysvalueof/tikz/life wheel/radius)
-- cycle;
else
foreach m [count=i] in 0,1,...,NumFeatures
draw[life wheel/Separator] (0,0) -- (360/NumFeatures*i:pgfkeysvalueof/tikz/life wheel/radius);
fi
%Drawing the names
foreach o/p [count=j] in #3
pgfmathtruncatemacromyintifthenelse(sin(360/NumFeatures*j)<0,-1,1)
ifnummyint<0% True
path[%Reverse
decoration=
raise = -0.4ex,
text along path,
text = ,
text align = center,
reverse path
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.7) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.7);%path
else%False
path[%Normal
decoration=
raise = -0.8ex,
text along path,
text = ,
text align = center
,
decorate
]
(360/NumFeatures*j:pgfkeysvalueof/tikz/life wheel/radius+0.35) arc (360/NumFeatures*j:360/NumFeatures*(j-1):pgfkeysvalueof/tikz/life wheel/radius+0.35); %Path
fi
foreach X in 1,...,NumImages
pgfmathsetmacrotmp360/NumFeatures*j+((1-2*X)/(2*NumImages))*360/NumFeatures
pgfmathsetmacroimgnameimglst[X]
beginscope
clip (tmp:pgfkeysvalueof/tikz/life
wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
circle[radius=pgfkeysvalueof/tikz/life wheel/outer image radius];
node[rotate=tmp-myint*90] at
(tmp:pgfkeysvalueof/tikz/life wheel/radius-1.1*pgfkeysvalueof/tikz/life wheel/outer image radius)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/outer image parameters]imgname
temp;
endscope
beginscope
pgfmathsetmacroimgnameimglst[0]
clip (0,0) circle[radius=pgfkeysvalueof/tikz/life wheel/inner image radius];
node at (0,0)
edeftempnoexpandincludegraphics[pgfkeysvalueof/tikz/life wheel/inner image parameters]imgname
temp;
endscope
%%%%%%%%%%%%%%%%
newcommandyourcmd[4]%
scalebox#1begintikzpicture[
% Environment Cfg
font=Large,
scale=1,
% Styles
]
tikzsetlife wheel/.cd,
radius/.initial=10,
outer image radius/.initial=0.5,
inner image radius/.initial=1,
outer image parameters/.initial=width=1.25cm,
inner image parameters/.initial=width=2.5cm,
Separator/.style=thick, color=black!50,
Border/.style=line width=1pt,color=red!60,shading=color wheel,
colors/.initial=
LifeWeel[#2]#3#4
endtikzpicture
begindocument
yourcmd
0.5
radius=5,outer image radius=0.4,colors="red","blue","magenta","purple","orange","green"
"example-image-a","example-image-a","example-image-b","example-image-c"
A/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
yourcmd
1
radius=5,outer image radius=0.4,colors="red","blue","magenta","purple","orange","green"
"example-image-a","example-image-a","example-image-b","example-image-c"
A/10,B/10,C/10,D/10,E/10,F/10,G/10,H/10
enddocument
edited yesterday
answered yesterday
JouleVJouleV
7,64222053
7,64222053
thank so much. Can you edit and definition this wheel before begindocument and in body you can call this definition and scale...if i copy and create 10 wheels in body so the code is very long,thanks
– latexforti
yesterday
1
@latexforti See my edited answer.
– JouleV
yesterday
3
The purpose of all thattikzset
stuff is precisely that you do not have to carry it around. You could (at least) simplify your command tonewcommandyourcmd[4]% scalebox#1begintikzpicture[font=Large,scale=1] LifeWeel[#2]#3#4endtikzpicture
and saytikzsetlife wheel/.cd, ...
only once.
– marmot
yesterday
add a comment |
thank so much. Can you edit and definition this wheel before begindocument and in body you can call this definition and scale...if i copy and create 10 wheels in body so the code is very long,thanks
– latexforti
yesterday
1
@latexforti See my edited answer.
– JouleV
yesterday
3
The purpose of all thattikzset
stuff is precisely that you do not have to carry it around. You could (at least) simplify your command tonewcommandyourcmd[4]% scalebox#1begintikzpicture[font=Large,scale=1] LifeWeel[#2]#3#4endtikzpicture
and saytikzsetlife wheel/.cd, ...
only once.
– marmot
yesterday
thank so much. Can you edit and definition this wheel before begindocument and in body you can call this definition and scale...if i copy and create 10 wheels in body so the code is very long,thanks
– latexforti
yesterday
thank so much. Can you edit and definition this wheel before begindocument and in body you can call this definition and scale...if i copy and create 10 wheels in body so the code is very long,thanks
– latexforti
yesterday
1
1
@latexforti See my edited answer.
– JouleV
yesterday
@latexforti See my edited answer.
– JouleV
yesterday
3
3
The purpose of all that
tikzset
stuff is precisely that you do not have to carry it around. You could (at least) simplify your command to newcommandyourcmd[4]% scalebox#1begintikzpicture[font=Large,scale=1] LifeWeel[#2]#3#4endtikzpicture
and say tikzsetlife wheel/.cd, ...
only once.– marmot
yesterday
The purpose of all that
tikzset
stuff is precisely that you do not have to carry it around. You could (at least) simplify your command to newcommandyourcmd[4]% scalebox#1begintikzpicture[font=Large,scale=1] LifeWeel[#2]#3#4endtikzpicture
and say tikzsetlife wheel/.cd, ...
only once.– marmot
yesterday
add a comment |
Thanks for contributing an answer to TeX - LaTeX Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f481071%2fcopy-and-scale-one-figure-wheel%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown