Two key questions - is your data gridded? And do you plan to sample from these density values later, or are you just wanting to plot it and see what it looks like?
If your data is gridded (your ~10000 lines cover every combination of x and y values in the range that you are interested in), then you can use the contour command in Gadfly, which is the volcano plot you described. You'll first need to reshape the data so it's a 2D array: think of it as displaying a 2D image, where the number at each point is the density. However, for displaying this kind of data, I prefer heatmaps, and I don't know if Gadfly supports those - you may have to look into the histogram2d command.
If it is not gridded (the x and y points don't have any particular structure to them), it's still possible, but you have to choose a way to decide how you want to turn it from unstructured data into a 2D image. The histogram2d approach that Tom showed above is one option, where you treat each density measurement as a weighted measurement in a histogram. But if your data represents single measurements of a function that has meaningful values away from those measured points, you probably want to interpolate between those points. For this you can use a package like Dierckx, which does interpolations on unstructured data. I also have some simple code that does barycentric triangular interpolation between unstructured points, in case you wanted to have a look at that.
This may be overkill, however, if you just want to look at the data and don't plan to interpolate or draw from those density values later. If that's the case, the trisurface plot above might be just what you need for showing you the shape of your density data.
Whatever you choose, I can recommend Tom's Plots package as a nice interface to the other plotting packages in Julia - it makes it easy to switch between different plotting options like Gadfly and PyPlot depending on what features they offer.
Cheers,
Scott