# Matplotlib and Seaborn
### Anotomy of a figure
https://matplotlib.org/stable/gallery/showcase/anatomy.html

### Figure and plots
```python=1
fig = plt.figure(figsize=(20, 8))
ax1, ax2= fig.subplots(1, 2) # Create multiple plots
ax = fig.subplots() # Create single plot
fig.savefig('file_name.pdf') # Save figure to a pdf file
```
### Axis
- Axis / limits: https://matplotlib.org/stable/api/axes_api.html#axis-limits
- Ticks and tick labels: https://matplotlib.org/stable/api/axes_api.html#ticks-and-tick-labels
```python=
font = {
'family': 'serif',
'color': 'darkred',
'weight': 'normal',
'size': 24,
}
# label-related
ax.set_xlabel(None) # remove x-axis label
ax.set_xlabel("X label", fontdict=font) # set label with font
ax.set_xlabel("X label", fontsize=14) # set label with fontsize
ax.set_xlabel("X label", labelpad=4.0) # adjust the label offset/position
# title-related
ax.set_title("title", fontdict=font)
ax.set_title("title", loc="left") # loc : {"center", "left", "right"}
ax.set_title("title", pad=4.) # adjust the title offset/position
# tick-realted
ticks = ax.get_xticks()
ax.set_xticks(ticks, labels=None) # set major ticks
ax.set_xticks(ticks, minor=True) # set minor ticks
ax.set_xticklabels(labels, fontdict=font)# set major tick labels
ax.set_xticklabels(labels, minor=True) # set minor tick labels
# scale
ax.set_xscale("log") # log-scale axis
```
### Legend
```python=
l = ax.get_legend()
l.remove() # remove legend
l.set_title(None) # remove title
l.set_title('legend', fontdict=font) # set legend title
# edit legend
texts = l.get_texts()
for txt in texts:
label = txt.get_text()
if '-' in label:
label = r'{}'.format(label.replace('-', '$-$'))
txt.set_text(label)
txt.set_family(font['family'])
txt.set_fontsize(font['size'])
l.set_frame_on(False) # remove legend frame
```