Processing math: 100%

8 votos

La mejor herramienta para generar diagramas de flujo de caja

A menudo tengo que generar diagramas de flujo de caja.

Me preguntaba si alguien tiene una buena herramienta para generarlos en cualquiera LATEX ¿o una foto?

3voto

Jiaaro Puntos 14379

He encontrado un buen ejemplo en esta página utilizando el paquete pgf/tikZ para LATEX .

El sitio web está dando el código para LATEX Si utilizas LyX, para obtener la misma muestra que en la página web tienes que hacer lo siguiente. Primero edita el preámbulo del documento usando Documento->Configuración:

 \usepackage{siunitx}
 \usepackage{tikz}
 \usetikzlibrary{calc,matrix}

y luego lo siguiente en un bloque de código:

 \begin{tikzpicture}[>=stealth,ultra thick]
    \draw[->] (0,0) -- (10,0);
    \draw (-1,0) node[below] {n} (-1,0.5) node[above] {PMT};
    \foreach \x/\n in {1/0,3/1,5/2,7/3,9/4}
      \draw (\x,0) node(\n)[below] {\n} -- (\x,0.5);
    \foreach \x/\n in {1/0,3/1,5/2,7/3}
      \draw (\x,0.5) node[above] {\num{5000}};
    \matrix (calc) [matrix of math nodes,matrix anchor=north west,nodes={anchor=east}] at (9,-1) {%
      \$ \num{5300.00} & = & \num{5000}\times (\num{1.06})^1 \\
      \$ \num{5618.00} & = & \num{5000}\times (\num{1.06})^2 \\
      \$ \num{5955.08} & = & \num{5000}\times (\num{1.06})^3 \\
      \$ \num{6312.38} & = & \num{5000}\times (\num{1.06})^4 \\
      \$ \num{23185.46} \\
    };
    \draw[thick] (calc-5-1.north west) -- (calc-5-1.north east);
    \foreach \n/\l in {0/4,1/3,2/2,3/1}
      \draw[->,gray!50] (\n) |- ($(calc-\l-1.west)+(-0.5,0)$);
  \end{tikzpicture}

0 votos

¿Por qué crees que esto requiere LyX?

0 votos

No lo hace, sólo di los pasos para usarlo con LyX, editaré para aclararlo. Puse los pasos para LyX porque conozco a muchas personas que no están familiarizadas con el trabajo directo con LATEX archivos.

3voto

Popofr13 Puntos 86

Esto se puede hacer usando python con la siguiente función (toda la documentación está disponible en este Repo de GitHub ):

import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator

def diagram (t, value, cashflow, c1="k", c2="k", currency="$", path = "test.png", aspect = [12,6], int_x = True, bar = True, show = False):

    fig, ax1 = plt.subplots(figsize=(aspect))

    # Define x axis as integer (optional)
    if int_x:
        ax1.xaxis.set_major_locator(MaxNLocator(integer=True))

    # Plot value (left axis) with color c1
    if (bar):
        ax1.bar(t, value, color = c1,  alpha= 0.3)
    else:
        ax1.plot(t, value, color = c1,  alpha= 0.3)
    ax1.set_xlabel('time (year)')

    # Set value label and currency
    ax1.set_ylabel('Future Value '+ currency, color = c1)
    ax1.tick_params('y', colors = c1)

    # Define twin axis for cashflow
    ax2 = ax1.twinx()

    # Find positive and negative values in cashflow
    pos = [i for i in range(len(cashflow)) if cashflow[i] > 0]
    neg = [i for i in range(len(cashflow)) if cashflow[i] < 0]

    # Plot cashflow (right axis) in the correct direction with color c2
    if (len(pos)):
        markerline, stemlines, baseline = ax2.stem(t[pos], cashflow[pos], markerfmt='^', basefmt=" ")
        plt.setp(stemlines, 'color', c2)
        plt.setp(markerline, 'color', c2)
    if (len(neg)):
        markerline, stemlines, baseline = ax2.stem(t[neg], cashflow[neg] ,markerfmt='v', basefmt=" ")
        plt.setp(stemlines, 'color', c2)
        plt.setp(markerline, 'color', c2)

    # Set cashflow label and currency
    ax2.set_ylabel('Cash Flow '+ currency, color=c2)
    ax2.tick_params('y', colors=c2)
    fig.tight_layout()

    # Remove the frame to visualize data more clearly
    ax1.spines['top'].set_visible(False)
    ax1.spines['right'].set_visible(False)
    ax1.spines['bottom'].set_visible(False)
    ax1.spines['left'].set_visible(False)
    ax2.spines['top'].set_visible(False)
    ax2.spines['right'].set_visible(False)
    ax2.spines['bottom'].set_visible(False)
    ax2.spines['left'].set_visible(False)

    # Save the plot to the specified path with 500dpi
    fig.savefig(path, dpi = 500)

    # Show plot (optional)
    plt.show (show)

2voto

Timothy Carter Puntos 7079

Aparte del enfoque de TikZ que has encontrado, estos lenguajes de scripting funcionarían:

  • MetaPost
  • PSTricks
  • Asíntota
  • MATLAB, véase cfplot
  • Mathematica, véase Cashflow

Los gráficos vectoriales son los más adecuados para esta tarea, así que si prefiere la interfaz gráfica de usuario apunte y haga clic:

  • Adobe Illustrator
  • CorelDRAW
  • Inkscape (gratuito)

1 votos

Más allá de una lista de paquetes de software, ¿puede dar ejemplos de cómo alguien crearía las parcelas? Por ejemplo, ¿hay algunos comandos MetaPost que el OP podría copiar y pegar?

1 votos

Sí podría, pero de su pregunta se desprende que pidió una buena herramienta, no comandos específicos.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X