viernes, 15 de julio de 2011

Minitutorial de uso de GNUPlot

GNUPlot puede trabajar tanto de forma interactiva como no interactiva, por lo que se puede invocar desde un shell script.

Un ejemplo sencillo.

Supongamos que tenemos tres ficheros, con dos columnas cada uno de datos numéricos separados por espacios en blanco (espacios, tabuladores, ...). Estos ficheros se pueden dibujar utilizando GNUPlot de forma tanto interactiva como no interactiva.

De manera interactiva

Abrimos GNUPlot en un terminal, escribiendo gnuplot y nos mostrará el modo interactivo. En el podemos representar los ficheros de forma rápida utilizando la orden plot.
plot ’fichero1.txt’ u 1:2, ’fichero2.txt’ u 1:2, ’fichero3.txt’ u 1:2

De manera no interactiva

En la terminal escribimos la siguiente orden para pintar los ficheros:
echo \
"plot ’fichero1.txt’ u 3:4, ’fichero2.txt’ u 3:4, ’fichero3.txt’ u 3:4" |
gnuplot -persist
La u es la abreviatura de la palabra reservada using y los números a continuación son el rango de columnas en el fichero que se van a representar.

Parámetros más comunes.

  • set xrange[a:b]: especifica el rango de la variable x.
  • set yrange[a:b]: especifica el rango de la variable y.
  • set xlabel 'etiqueta': especifica la etiqueta del eje x.
  • set ylabel 'etiqueta': especifica la etiqueta del eje y.
  • set encoding iso_8859_1: especifica el tipo de codificación. Resulta útil cuando es necesario rotular utilizando acentos.
  • set title 'etiqueta': especifica el título del gráfico.
  • set logscale x : fija el eje x con escala logarítmica.
  • set logscale y : fija el eje y con escala logarítmica.
  • set xtics ("1" 1, "Dos" 2): especifíca que puntos del eje x deben aparecer en la gráfica y qué etiqueta deben llevar.
  • set ytics ("1" 1, "Dos" 2): especifíca que puntos del eje y deben aparecer en la gráfica y qué etiqueta deben llevar.
  • set key [punto/posición]: especifica el lugar dónde situar la leyenda. Puede ponerse el punto absoluto o utilizar una posición relativa de entre {left | right | center} {top | bottom | center}.

Utilizar una escala logarítmica.

set autoscale
set title 'Tasa de error en función del nº de estados.'
set xlabel "Estados"
set ylabel "%Error"
set logscale x
set logscale y
set xrange [0.9:280]
set yrange [0.9:104]
set xtics ("1" 1, "2" 2, "4" 4, "8" 8, "16" 16, "32" 32, "64" 64, "128" 128, "256" 256)
set ytics ("1" 1, "2" 2, "3" 3, "4" 4, "5" 5, "10" 10, "20" 20, "30" 30, "40" 40, "50" 50, "100" 100)
plot "salida_codeword4" using 1:2 title  'Codewords = 4' with linespoints, \
     "salida_codeword16" using 1:2 title '           16' with linespoints, \
     "salida_codeword64" using 1:2 title '           64' with linespoints, \
     "salida_codeword256" using 1:2 title '          256' with linespoints
Generando la siguiente gráfica:

Utilizar LaTeX para pintar la gráfica.

GNUPlot puede generar un fichero con la información de la gráfica para LaTeX. Este fichero es importado en un documento de LaTeX que es quién realiza el dibujado. Para que genera un fichero en LaTeX hay que utilizar la orden:
set output "fichero_latex.tex"
Un ejemplo de uso, en el que se pinta la función seno escrita en notación polaca inversa.
set terminal latex
set output "gnueg.tex"
set title "This is a plot of $y=\sin(x)$"
set xlabel "This is the $x$ axis"
set ylabel "\\rotatebox{90}{This is the $y$ axis}"
plot [0:2*pi] [-1.2:1.2] sin(x) title "Sinus"
set output "egpltl.tex"
replot
Para importarla en LaTeX, se podría hacer de la siguiente manera:
\begin{figure}[ht]
 \centering
 \scalebox{0.8}{\input{egpltl.tex}}
 \caption{Funció generada per {\sf GNUPLOT}.}\label{egplt1}
\end{figure}

jueves, 14 de julio de 2011

Un promtp para Linux

Un prompt sencillo para Linux.
Para utilizar este prompt de manera permanente:
export PS1="\[\033[0;34m\]\[\e]0;\u@\h: \w\a\]\u\[\033[0;31m\]@\h:\w$ \[\033[0;0m\]"

Ambiance Evolution para Ubuntu.

Un tema para Ubuntu.
Para instalarlo se añaden dos repositorios: equinox con los iconos de faenza y ambiance-evolution donde está el tema ambiance modificado.
sudo apt-add-repository ppa:tiheum/equinox
sudo apt-add-repository ppa:victored/ambiance-evolution
sudo mv  /usr/share/themes/Ambiance ~/
sudo mv  /usr/share/themes/Radiance ~/
sudo apt-get update
sudo apt-get install --reinstall light-themes

martes, 12 de julio de 2011

Wallpapers

Los fondos de escritorio que en algún momento he usado.










Personalizando las citas y referencias cruzadas en LaTeX.

Al igual que se personalizó el énfasis del texto en este post, también se puede hacer lo mismo para las citas a libros y a referencias cruzadas. Para ello, podemos crear dos nuevos comandos, a los que llamaré "myref" y "mycite".
\newcommand{\myref}[1]{\textcolor{red}{\emph{(\ref{#1})}}}
\newcommand{\mycite}[1]{\textcolor{PineGreen}{\cite{#1}}}
El texto ha sido generado de la siguiente manera:
que es poden consultar en \mycite{ogata} i \mycite{philips}, calculem les següents funcions de transferència que podem veure en les seccions~\myref{sec:pv},~\myref{sec:pdv},~\myref{sec:piv} i~\myref{sec:pidv}.
Los colores se encuentran dentro del paquete xcolor
\usepackage[usenames,dvipsnames]{xcolor}

Ejemplo de uso de lstlistings en LaTeX.

El paquete lstlisting permite incluir código fuente personalizado en LaTeX. Para ello, lo primero es incluir el paquete:
\usepackage{listings}
En este caso, el código se encuentra dentro de un fichero, reduciendo así el número de líneas del documento de LaTeX. El código que produce la figura de la imagen es el siguiente:
\lstset{numbers=left,stepnumber=5,numberstyle=\tiny,basicstyle=\footnotesize,stringstyle=\ttfamily,language=C,keywordstyle=\color{RedViolet},identifierstyle=\color{Mahogany}\bfseries,commentstyle=\scriptsize\itshape,basicstyle=\ttfamily}
\lstinputlisting[language=C, frame=trBL, texcl=true, escapechar=',%
caption={Dispositiu de \emph{Duff}}, label=lst:duff]{duffsdevice.c}
Donde duffsdevice.c es el nombre del fichero con el código C. Como se puede ver en la figura se ha cambiado el rótulo del código. Esto se puede conseguir de la siguiente manera:
\addto\captionscatalan{\renewcommand{\lstlistingname}{Algorisme}}

Personalizar el énfasis de un texto en LaTeX.

Enfatizar un texto en Latex puede convertirse en una tarea ardua si el número de palabras a resaltar es grande y si además se quiere utilizar algún color. Por esto, es una buena idea crear un nuevo comando para enfatizar. Yo lo he llamado "myemph" y lo he definido de la siguiente manera:
\newcommand{\myemph}[1]{\textcolor{Mulberry}{\emph{#1}}}
De esta manera, cuando enfatizo una palabra uso este nuevo comando.
\myemph{pattern matching}
Obteniendo algo así:
Cambiar el color de las palabras enfatizadas será mucho más rápido. Para utilizar este color es conveniente añadir el paquete xcolor.
\usepackage[usenames,dvipsnames]{xcolor}

Suavizar el texto de los documentos de LaTeX

El texto de la izquierda ha sido compilado sin más, en cambio el de la derecha ha sido compilado usando el paquete lmodern. Se puede apreciar que el texto de la derecha tiene un trazo más fino y continuo.

Si prefieres el trazo de la derecha recuerda añadir el paquete lmodern:
\usepackage{lmodern}

¿Cómo escribir el valor absoluto o la norma en LaTeX?

Para escribir el valor absoluto o la norma en LaTeX es conveniente crear un comando antes que usar la barra vertical "|". De forma muy simple antes del cuerpo del documento basta añadir las dos instrucciones siguientes:
\providecommand{\abs}[1]{\lvert#1\rvert}
\providecommand{\norm}[1]{\lVert#1\rVert}
Estos comandos se usan de la siguiente manera:
 \begin{gather}
  \abs{r_1} = \sqrt{\alpha^2 + \beta^2}\\
  \norm{r_2} = \sqrt{\alpha^2 + \beta^2 + \gamma^2}
 \end{gather}
Dando lugar a:

Ejemplo de cómo dibujar un circuito eléctrico en LaTeX.

A continuación un ejemplo sencillo de cómo dibujar un circuito eléctrico en LaTeX como el de la figura.
Incluyendo el paquete pstricks y pst-circ:
\usepackage{pstricks,pst-node,pst-circ,pst-plot,pst-3dplot}

Dentro del bloque de \begin{document} insertamos el código:
 \begin{figure}[ht]
  \centering
  \scalebox{0.8}{
  \ovalbox{\begin{pspicture}(-1,-1)(9,6)
   %Nodos del circuito
   \pnode(0,0){A}
   \pnode(3,0){B}
   \pnode(4,0){C}
   \pnode(5,0){D}
   \pnode(8,0){E}
   \pnode(0,2){F}
   \pnode(0,5){G}
   \pnode(3,5){H}
   \pnode(4,5){I}
   \pnode(8,5){J}
   %Conexiones
   \battery[directconvention=false,labeloffset=1.](F)(A){$3V$}
   \battery[directconvention=true](H)(I){$5V$}
   \myresistor{$i_1$}{A}{B}{$5\Omega$}
   \myresistor{$i_2$}{D}{E}{$1\Omega$}
   \myresistor{$i_1$}{F}{G}{$1\Omega$}
   \myresistor{$i_1$}{G}{H}{$2\Omega$}
   \myresistor{$i_3$}{I}{C}{$3\Omega$}
   \myresistor{$i_2$}{I}{J}{$2\Omega$}
   \myresistor{$i_2$}{J}{E}{$4\Omega$}
   %Cable para completar el circuito
   \wire(B)(C)
   \wire(C)(D)
   %Tierra
   \newground(C)
  \end{pspicture}}}
  \caption{Circuito con dos mallas.}\label{fig:circuito}
 \end{figure}

Google Pretty Print para blogspot.

Google Pretty Print permite resaltar código de ciertos lenguajes de programación. Puede encontrar una lista actualizada haciendo clic aquí. El código se puede resaltar usando varios estilos, puede verlos aquí.

Para utilizarlo en blogspot, hay que añadir las dos siguientes líneas debajo de la etiqueta <head>
<link href="http://google-code-prettify.googlecode.com/svn/trunk/styles/sunburst.css" rel="stylesheet" type="text/css"></link>
<script src="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js" type="text/javascript">
</script>
Y en la etiqueta <body> poner:
<body onload='prettyPrint()'>
Para utilizarlo, en la entrada hay que poner:
<pre class="prettyprint"><code class="language-java">...</code></pre>
Puede ver un ejemplo de código Java resaltado haciendo clic aquí. Si dispones de algún dominio en internet, puedes decargar el script de Google Pretty Print y no depender de los enlaces de Google. Para ello, puedes descargarlo desde la página oficial de Google Pretty Print haciendo clic aquí.