VIS: Accept xlabel and ylabel for scatter and hexbin plots
- [x] closes #37001
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

I'm a bit puzzled by the type annotations on these params (from #34827)

https://github.com/pandas-dev/pandas/blob/9cb372376fc78aa66e2559de919592007b74cfaa/pandas/plotting/_matplotlib/core.py#L105-L106

They're `Optional[Label]` but `Label = Optional[Hashable]`. I'm all for making the Optional-ness of the parameters explicit but I'm not sure if the nesting has any side-effects, or why `Label` is `Optional` in the first place. > I'm not sure if the nesting has any side-effects 

emm, any comments on the "potential" side-effect it might have? @simonjayhawkins  I added to make it more explicit, probably also okay if only having `xlabel: Label = None`? lgtm. @charlesdong1991 merge when updated / green. > emm, any comments on the "potential" side-effect it might have? @simonjayhawkins I added to make it more explicit, probably also okay if only having `xlabel: Label = None`?

not an issue. adding Optional is fine. Where the problem occurs is where we need to distinguish between user passing None as a valid label, I don't think that's relevant here.

```
from pandas._typing import Label
from typing import Optional

a: Optional[Label]
reveal_type(a)  # Revealed type is 'Union[typing.Hashable, None]'
```
 Not sure why that check failed, it's way outside this PR hmm, this seems to be related to https://github.com/pandas-dev/pandas/pull/37024 

will let you know once it's fixed so that you could rebase, sorry @treuherz  > hmm, this seems to be related to #37024
> 
> will let you know once it's fixed so that you could rebase, sorry @treuherz

cc @arw2019 from changes in #37050 ~OK @simonjayhawkins shall i revert that PR to get CI green for now?~

ah, just saw you have done that, sorry for the noise very nice! congrats on your first PR on pandas! @treuherz 