Thomae’s function (a.k.a. Riemann function) is defined on the interval (0, 1) as follows
Here is the graph of this function with some points highlighted as plus symbols for better view.
This function has interesting property: it’s continuous at all irrational points. It’s easy to see this if you notice that for any positive ε there is a finite number of dots above the line y = ε. That means for any irrational number x_{0} you can always construct a δneighbourhood that doesn’t contain any dot from the area above the line y = ε.
To generate the data file with point coordinates I wrote Common Lisp program:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 

To create the images I used gnuplot commands:
plot "thomae.dat" using 1:2 with dots
plot "thomae.dat" using 1:2 with points
and Photoshop.