Usually when working on data I use octave (when it comes to statistics) and C or Python (when it comes to other data). In the end, however, it all comes down to presenting the data. And here I always use like most people gnuplot and matplotlib.

However, in a typical workflow like data preparation → processing → presentation → uploading to a document, the problem is sometimes placing subtitles and annotations in the same style as the document. You can use tex insertions in vector graphics and recompile them in final document. But this is a rather tedious process. If you want to edit the annotations, you have to edit the graphic directly anyway.

For simpler graphs and ready-made data sets (e.g. in CSV) it is possible to generate graphs directly in LaTeX using pgfplots package whose syntax is very similar to matplotlib. I highly recommend the official documentation of the package which in my opinion is done quite well. It has hyperlinks at every step on all the example syntax fragments, which makes navigating the document quite easy.

Below is a simple example with a figure generated directly in LaTeX. You can check more examples under pgfplots sourceforge gallery site.

\documentclass{article}
\pagestyle{empty}
\usepackage[paperwidth=7cm,paperheight=7cm,margin=0in]{geometry}

\usepackage{pgfplots}
\pgfplotsset{width=7cm,height=5cm,compat=1.17}

\begin{document}

\begin{figure}
\center
	\begin{tikzpicture}
	\begin{axis}[
	]
		% density of Normal distribution:
		\addplot [
			red,
			domain=-3e-3:3e-3,
			samples=201,
		]
			{exp(-x^2 / (2e-3^2)) / (1e-3 * sqrt(2*pi))};
	\end{axis}
	\end{tikzpicture}
\label{fig:normal-distribution-density}
\caption{Density of Normal distribution}
\end{figure}

\end{document}