Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I have a problem trying to create a simple funnel, as it can be seen on the attached file: enter image description here

I have tried to look at the internet, trying to write the lines, but it won't work. I am using TikZ. The basic idea with the figure is to show the reader, that I do a delimitation.

If someone can help me or have another better option, I would be glad to hear about that.

share|improve this question
2  
This is what Wikipedia reports as a helix and a spiral - both of which reference "mathematical curves". None of that is highlighted in your graphic. –  Werner Apr 13 at 14:01
    
I could not find a better word. Maybe a funnel is more precise? –  A. F. Apr 13 at 14:29
    
You should accept one of the answers. –  Svend Tveskæg Apr 15 at 12:08

3 Answers 3

up vote 6 down vote accepted

Doesn't generalize very well, but...

\documentclass[tikz,border=5]{standalone}
\begin{document}
\begin{tikzpicture}[x=4cm,y=.5cm, >=stealth]
\foreach \i [evaluate={%
  \x=\i<4 ? \i : (\i<16 ?    1 : (\i<22 ?     2 : 3));
  \y=\i<4 ?  1 : (\i<16 ? 2-\i : (\i<22 ? 11-\i : 15-\i));
}] in {1,...,23}
  \node (text-\i) at (\x,\y) {Text \i};
\draw [->] ( text-4.north west -| text-15.west)++(0,1)  -- (text-22.north east);
\draw [->] (text-15.south west)++(0,-1) -- (text-23.south east);
\end{tikzpicture}

enter image description here

share|improve this answer

A PSTricks solution:

\documentclass{article}

\usepackage{pstricks}
\usepackage{multido}


\begin{document}

\begin{pspicture}(8,8.1)
  \psline{->}(0,0)(8,3)
  \psline{->}(0,7)(8,4)
  \multido{\iA = 1+3, \iB = 1+1}{3}{\rput(\iA,8){Text~\iB}}
  \multido{\r = 5.975+-0.45, \i = 4+1}{12}{\rput(1,\r){Text~\i}}
  \multido{\r = 4.625+-0.45, \i = 16+1}{6}{\rput(4,\r){Text~\i}}
  \multido{\r = 3.725+-0.45, \i = 22+1}{2}{\rput(7,\r){Text~\i}}
\end{pspicture}

\end{document}

output

share|improve this answer

Something like this?

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}

\begin{document}

\begin{tikzpicture}
% Line of Text
\node at (0,7) {Text 1};
\node at (4,7) {Text 2};
\node at (8,7) {Text 3};
% First column of Text
\node at (0,5.5) {Text 4};
\node at (0,5) {Text 5};
\node at (0,4.5) {Text 6};
\node at (0,4) {Text 7};
\node at (0,3.5) {Text 8};
\node at (0,3) {Text 9};
\node at (0,2.5) {Text 10};
\node at (0,2) {Text 11};
\node at (0,1.5) {Text 12};
\node at (0,1) {Text 13};
\node at (0,0.5) {Text 14};
\node at (0,0) {Text 15};
% Second column of Text
\node at (4,4) {Text 16};
\node at (4,3.5) {Text 17};
\node at (4,3) {Text 18};
\node at (4,2.5) {Text 19};
\node at (4,2) {Text 20};
\node at (4,1.5) {Text 21};
% Third column of Text
\node at (8,3) {Text 22};
\node at (8,2.5) {Text 23};
% Arrows
\draw[-triangle 60] (-1,6.5)--(9,3.5);
\draw[-triangle 60] (-1,-1)--(9,2);
\end{tikzpicture}

\end{document}

Yielding this:

enter image description here

Edit: An adjustment for shorter code, but less control over what might be placed in place of each specific "Text":

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc,arrows}
\begin{document}

\begin{tikzpicture}
% Line of Text
\foreach \x in {1,2,3}{\node at ($(0,7)+(\x*4-4,0)$) {Text \x};}
% First column of Text
\foreach \x in {4,...,15}{\node at ($(0,6)+(0,\x*-.5+1.5)$) {Text \x};}
% Second column of Text
\foreach \x in {16,...,21}{\node at ($(4,4)+(0,\x*-.5+8)$) {Text \x};}
% Third column of Text
\foreach \x in {22,23}{\node at ($(8,3)+(0,\x*-.5+11)$) {Text \x};}
% Arrows
\draw[-triangle 60] (-1,6.5)--(9,3.5);
\draw[-triangle 60] (-1,-1)--(9,2);
\end{tikzpicture}

\end{document}
share|improve this answer
    
The output is fine but can you get rit of all the hard-coded stuff? –  Svend Tveskæg Apr 15 at 3:58
    
@SvendTveskæg Sure, with a \foreach \x\y\z in {0/7/1,4/7/2,...} loop, or I suppose \foreach \x in {1,...,12} for the first column and some counter manipulation. I actually assumed the asker was putting the "Text"s as placeholders here, that he/she wanted to put something more specific, more relevant to what he/she is doing, in place of those, and they might not be so easily iterable. I might be wrong, though. –  jlv Apr 15 at 4:05
1  
I just ask because I don't know TikZ myself and would like to see other solutions than the one of Mark Wibrow. :) –  Svend Tveskæg Apr 15 at 4:08
1  
@SvendTveskæg See my edit. The approach resembles yours now, with a single command for each "group" of "Text"s. –  jlv Apr 15 at 4:22

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.