Aside from the ksmooth approach you could do a simple linear regression:
fitted_model <- lm(Tonnes ~ Density)
summary(fitted_model)
In the summary you look for the "Estimate" that tells you how much increase you expect for each increase in Density.
You should also plot the model by simply:
plot(Tonnes, Density)
abline(fitted_model)
The plot tells you visually how well the line fits but it also hints if you need some value transformation. Log() is a good transformation that is frequently used, our sense of numbers is actually logarithmic and it's when we're about 3-4 years old that we unlearn that natural instinct of logarithmic counting. This is probably due to that many things appear logarithmic in nature, when a cell divides it divides into to creating an exponential increase in cells. You should suspect logarithmic transformations if your data is grouped at one end of the plot.
@rolando2: I heard about the logarithmic counting through listening to a lovely RadioLab episode about Numbers. They report about tribes in the Amazon that don't have our numbers and that they still as adults count in a logarithmic way.