swcarpentry / python-novice-gapminder

Plotting and Programming in Python
http://swcarpentry.github.io/python-novice-gapminder/
Other
162 stars 428 forks source link

axis labels are wonky in gdp mean exercise #673

Open alee opened 4 months ago

alee commented 4 months ago

How could the content be improved?

670 exposed some issues in the rendering of the comparing data challenge

gdp

Which part of the content does your suggestion apply to?

https://swcarpentry.github.io/python-novice-gapminder/14-looping-data-sets.html#comparing-data

georginaalbadri commented 4 months ago

Hello,

Two options depending on the amount of complexity we want to add. The first is just to rotate the xticklabels; this can be added prior to the plt.legend() line (outside of the loop):

# rotate the xticklabels on the plot for better readability plt.xticks(rotation=90) # stop the labels being cut off when saving the figure plt.tight_layout()

rotated_labels

The second, the preferred option for a more presentable graph but likely too complex to include at this point in the tutorial is to split the strings in the xticklabels and keep only the year, since the rest of the label is the same for all the data. Add this prior to the plt.lengend() line (outside of the loop):

# set the x-labels to be the year in the column headings of the dataframe # get dataframe column headings headings = dataframe.columns[1:] # split the strings into two parts on the underscore and get the second part (the year) years = headings.str.split('_').str.get(1) # use the years as x-axis labels ax.set_xticks(range(len(years))) ax.set_xticklabels(years) ax.set_xlabel('Year')"

split_labels

I think as this part of the lesson is on looping over the data rather than presentation the rotation is probably sufficient!

alee commented 4 months ago

Thanks for sharing @georginaalbadri ! A PR for this would be welcome, but I can also submit one on your behalf next week.