boxplot fontsize argument only works on x axis (and not on y axis) #15108

Closed
cbrnr opened this Issue Jan 11, 2017 · 2 comments

Comments

Projects
None yet
2 participants
Contributor

cbrnr commented Jan 11, 2017

Code Sample

import pandas as pd
df = pd.DataFrame({"a": [0, 0, 0, 1, 1, 1], "b": [1, 2, 3, 4, 5, 6]})
df.boxplot("b", by="a", fontsize=20)

Problem description

The fontsize is only applied to the x axis and not to the y axis tick labels (see figure).
boxplot

Expected Output

IMO this argument should change the font size of both axes tick labels. Side note: I've tried to use the new plot API, but I couldn't get the output to match the one shown above using df.plot.box (I couldn't figure out how to set the variable to plot in the first place - probably this only works on Series and not on DataFrames).

Output of pd.show_versions()

INSTALLED VERSIONS
------------------
commit: None
python: 3.5.2.final.0
python-bits: 64
OS: Darwin
OS-release: 15.6.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8

pandas: 0.18.1
nose: 1.3.7
pip: 8.1.2
setuptools: 27.2.0
Cython: 0.24.1
numpy: 1.11.1
scipy: 0.18.1
statsmodels: 0.6.1
xarray: None
IPython: 5.1.0
sphinx: 1.4.6
patsy: 0.4.1
dateutil: 2.5.3
pytz: 2016.6.1
blosc: None
bottleneck: 1.1.0
tables: 3.2.3.1
numexpr: 2.6.1
matplotlib: 1.5.3
openpyxl: 2.3.2
xlrd: 1.0.0
xlwt: 1.1.2
xlsxwriter: 0.9.3
lxml: 3.6.4
bs4: 4.5.1
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 1.0.13
pymysql: None
psycopg2: None
jinja2: 2.8
boto: 2.42.0
pandas_datareader: None
Contributor

TomAugspurger commented Jan 11, 2017

Thanks for the report. I think you're right that fontsize should apply to all the ticklabels.
Interested in submitting a fix? The problem is roughly around here. I don't think the fontsize should be set there. We should follow up with something like

if kwds.get('fontsize') is not None:
    ax.tick_params(axis='both', labelsize=fontsize)

Not great that pandas is using fontsize, when it should be called labelsize, but oh well.

And as you noticed, the .plot.box() output isn't the same as .boxplot yet (backwards compatibility things).

TomAugspurger added this to the 0.20.0 milestone Jan 11, 2017

Contributor

cbrnr commented Jan 11, 2017

Thanks @TomAugspurger! Alright, I'll try to submit a PR soon. We should think about creating another issue to rename fontsize to labelsize. And thanks for confirming that plot.box is not there yet.

cbrnr referenced this issue Jan 19, 2017

Merged

Apply fontsize to both x- and y-axis tick labels #15161

4 of 4 tasks complete
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment