Which tools should be used to produce charts in computer science research papers?

To add to other answers that will probably suggest some nice, specific software:

Use whatever you are comfortable with. I personally don't think this figure 8 is that special, and I don't even think it has any features that cannot easily be done with something as common as Excel. As also mentioned in some comments: even the potential graphical powerhouse Matlab will produce crappy figures if you use the standard settings. The same for some other "go-to" software packages. But you have to be able to use them.

In almost all of the mentioned software you can adapt (almost) everything, and some default settings look better than others (one of the reasons why Excel has such a bad reputation).

The most important thing is that you decide how a graph should look, and actually make it look like that. Don't settle for default colors / font sizes and line widths! Whatever software you use to get there is your choice.

If you're fluent in MS Office: probably you should just use Excel. If you like to write scripts and use commands instead of clicking everywhere: Matlab might be an option. If spent 3 years getting good at using Graphpad but don't like how the graphs look? Just adapt them to fit your tastes, don't be limited by the default settings.

And when exporting them use the right settings. Many journals accept vector graphics, which will always look better, but the journal has to accept those. Figures also need to be the right size. Everything can look perfect printed 12 cm wide, but when your graph has to fit one column (8.5 cm), the same graph will look too small with unreadable fonts.


You can use TIKZ and PGFPLOTS packages in latex to produce beautiful figures, see these pages for some examples, TIKZ examples and PGFPLOTS examples.

Matlab and python are powerful software for producing nice plots. Barchart creation using Matlab, Barchart Matlab examples, and Python example, Python matplot example.


Adding to the other answers for the sake of completeness:

gnuplot

Gnuplot is always an option if you do not want to use Python or R. It is freely available and can be used on most platforms. Also plotting can be automated using shell scripts.

Inkscape

Inkscape is a vectorgraphics tool that can be used to create nice graphics. While it provides a rudimentary function plotter and can render TeX code I would advise against using it to create graphics.

In enhancing plots however, Inkscape can be invaluable. You can use Inkscape to edit svg and pdf files created by other plotting tools, like matplotlib, gnuplot, etc. I use this for grouping, recoloring, editing and adding labels, and other fine tuning tasks.

Inkscape is also available on most platforms. To edit a pdf file just open it with Inkscape (File -> Open).

Off Topic: Literature

As others have mentioned, it is not the tool, it is what you do with it. While this might not be a direct answer to the question, I would like to recommend the Edward Tufte's book Envisioning Information. It explores several facets of what makes a good visualization of data and how to highlight what you actually want to show.