Essentially I am looking for a way to create a similar plot to the top one in this link, the line plot with varying line thickness: https://www.informationisbeautifulawards.com/showcase/2518-the-safest-cars-of-the-last-eleven-years

Question 1: Does this kind of plot have a particular name, or is it just a version of a line plot?

Question 2: Does anyone know if and how this kind of plot can be created using ggplot2 or D3.js? I am a bit of a newbie in both so any links to helpful resources would be greatly appreciated!

I have been searching online for quite some time to try and figure this out by myself, but haven't found a solution yet. My attempts so far has been to use geom_line and geom_smooth in ggplot2 as follows:

ggplot(data.df, aes(x=time, y=rank)) + 
geom_line(group = group, colour = group, size = value) +
geom_smooth(aes(x = timer, y = rank, group = group, size = value), method = 

Though this doesn't give me the result I am looking for. Could someone please point me in the right direction here?


1 Answer 1


It looks a bit like a slope-chart

discussions about this on Tufte's website are very usefull:



Then there is a visual sauce added to it (more like requiring graphical software or programming libraries than serious data processing software) which looks much like a Sankey diagram, although it does not at all have the same function as a regular Sankey diagram (used for flows) and I believe that this colorful line-width changing stuff is mostly detrimental. But well, that might be a matter of taste, apparently this monster won a prize for being beautiful.

If you want to stick with this silly graph then look here: https://stackoverflow.com/questions/9968433

  • $\begingroup$ Thanks for your help Martijn! I guess this type of plot doesn't appeal to everyone, but I'm trying to visualise the ranking of sports teams over time, with the width of the line representing the amount of points they got each season, and I though this might be appropriate for that end. $\endgroup$
    – Bjorn
    Oct 30, 2017 at 11:35
  • $\begingroup$ Bjorn, if you found this answer helpful, then please consider upvoting and/or accepting it. $\endgroup$ Oct 30, 2017 at 11:47
  • 2
    $\begingroup$ While there are many considerations, which differ based on data specifics, I can imagine that in your case (teampoints and time), you'll have sufficient ability to display information, by using just the height (points) and width (year). Adding these line thickness variations is unnecessary, and may eventually be more like confusing than clarifying. Note that the graph in your link is beautiful, but not easy to read (do a check and see how much time it takes people to find 'Volvo' and what the consistency is for the interpretation of the height and thickness, as well as time to get to find it). $\endgroup$ Oct 30, 2017 at 12:04
  • $\begingroup$ @StephanKolassa Can't upvote because of my lack of reputation, but have accepted the answer. Thanks for reminding me, I'm quite new around here so I tend to forget these things :) $\endgroup$
    – Bjorn
    Oct 30, 2017 at 12:22
  • $\begingroup$ @MartijnWeterings Would you suggest that I just use a line plot with time on the x-axis and points on the y-axis? My thinking was that varying line thickness would add some redundancy and make the plot more interesting to look at, but I agree with you that my example is quite confusing. I guess I'll just have to play around a bit with different plots and see what looks best. Thanks again for your help! $\endgroup$
    – Bjorn
    Oct 30, 2017 at 12:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.