[Tex/LaTex] How to draw arrow in the figure, such that the arrow points to a particular node

arrowspositioningtikz-arrowstikz-pgf

I have a figure of a graph with 8 nodes. I want to draw arrows, s.t. they will point to some of the nodes (for example I want to draw arrows pointing to 4 of the nodes). Also, next to each arrow I want to write some text. To do so, I used this webpage: http://en.wikibooks.org/wiki/LaTeX/Picture#Arrows and I thought that I have to write each arrow separately and to fix the placement manually. However, I can not move the arrow from the position where it is. Any ideas?This is the result Here is the complete code that I used:

 \\documentclass[11pt]{article}
\usepackage{tikz}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}
\tikzset{%
   point/.style = {fill=black,inner sep=1pt, circle, minimum width=3pt,align=right,rotate=60},
   } 
\tikzstyle{weight} = [font=\scriptsize]  
\tikzstyle{vertex}=[circle,fill=blue!20]

\makeatletter
\setlength{\@fptop}{0pt}
\makeatother

\section{Some section}

\begin{figure}
 \centering
 \begin{subfigure}{0.5\textwidth}
 \resizebox{0.7\textwidth}{!}{
 \begin{tikzpicture}
  [scale=.8,auto=right]
      \put(0,10){\vector(1,0){20}}
      \node[vertex] (v1) at (1,10)  {$a$};
      \node[vertex] (v2) at (1,8)  {$b$};
      \node[vertex] (v3) at (1,6)  {$c$};
      \node[vertex] (v4) at (1,4)  {$d$};
      \node[vertex] (v5) at (8,10)  {$e$};
      \node[vertex] (v6) at (8,8)  {$f$};
      \node[vertex] (v7) at (8,6)  {$g$};
      \node[vertex] (v8) at (8,4)   {$h$};

     \draw[->] (v1)--(v8);
     \draw[->] (v1)--(v5);
     \draw[->] (v2)--(v5);
     \draw[->] (v2)--(v6);
     \draw[->] (v3)--(v6);
     \draw[->] (v3)--(v7);
     \draw[->] (v4)--(v7);
     \draw[->] (v4)--(v8);
 \end{tikzpicture}
 }

 \caption{I want to place the arrow s.t. it will point to node "a". Also I want to insert some text above the arrow}
    \label{fig:1}
    \end{subfigure}
    \hspace{4em}%
    \caption{I want to place the arrow s.t. it will point to node "a". Also I want to insert some text above the arrow.}\label{fig:animals}
\end{figure}




\end{document}

Best Answer

Possibly something like this?

Pinned node

This was produced using the pin facility for labelling nodes. Note that I've updated your code to use \tikzset consistently since \tikzstyle is deprecated.

\documentclass[tikz, border=10pt]{standalone}

\begin{document}

  \tikzset{%
    point/.style = {fill=black,inner sep=1pt, circle, minimum width=3pt,align=right,rotate=60},
    weight/.style={font=\scriptsize},
    vertex/.style={circle,fill=blue!20}
  }

  \begin{tikzpicture}
    [scale=.8,auto=right]
    \put(0,10){\vector(1,0){20}}
    \node[vertex, pin={[pin edge=<-, pin distance=10pt]105:{Label Here}}] (v1) at (1,10)  {$a$};
    \node[vertex] (v2) at (1,8)  {$b$};
    \node[vertex] (v3) at (1,6)  {$c$};
    \node[vertex] (v4) at (1,4)  {$d$};
    \node[vertex] (v5) at (8,10)  {$e$};
    \node[vertex] (v6) at (8,8)  {$f$};
    \node[vertex] (v7) at (8,6)  {$g$};
    \node[vertex] (v8) at (8,4)   {$h$};

    \draw[->] (v1)--(v8);
    \draw[->] (v1)--(v5);
    \draw[->] (v2)--(v5);
    \draw[->] (v2)--(v6);
    \draw[->] (v3)--(v6);
    \draw[->] (v3)--(v7);
    \draw[->] (v4)--(v7);
    \draw[->] (v4)--(v8);

  \end{tikzpicture}

\end{document}