Python数据可视化—matplotlib以及seaborn基础

数据可视化是数据科学工作者必备的技能之一。数据可视化可以分为两类:

  1. 静态作图(static plot) :matplotlib及seaborn为代表。优点是作图简便快捷。seaborn是matplotlib的高级封装,二者在作图过程中可无缝衔接。
  2. 交互式作图(interactive plot): Bokeh及Plotly为代表。二者皆为JavaScript作图库,优点是可交互式作图,且更加丰富。
    本篇博客旨在阐述个人认为最方便的结合matplotlib和seaborn的静态作图方法,作图库的基本原理一笔带过。

修改默认配置

matplotlib的默认配置存储在rcParam字典中,在动态环境中可修改字典值改变默认配置,也可以通过修改配置文件matplotlibrc,永久更改默认配置,如下:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文支持, 黑体字体
plt.rcParams['axes.unicode_minus'] = False  # 负号支持
plt.rcParams['figure.dpi'] = 200  # 图片像素

import matplotlib as mpl
# 获取matplotlibrc所在文件夹
matplotlib.matplotlib_fname()
'''
进入该文件夹,找到配置文件matplotlibrc,找到需要需要修改的属性,删除"#",修改值。例如字体以支持中文:
font.sans-serif     : SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
'''

快速作图

使用seaborn可快速作各种漂亮的图,再使用matplotlib进行微调。

import seaborn as sns
import matplotlib.pyplot as plt
# 设置sns作图背景
sns.set(style='whitegrid', palette='pastel', color_codes=True) # color_codes表示使用颜色简称,如b表示blue
# 调用sns高级接口作图
fig = sns.barplot(x,y, label='图例')
# 擦除多余框线
sns.despine(left=True, right=True, top=True)
# 设置标题
plt.title('示例图',size=20)
# 设置轴标记
plt.xlabel('X',size=12)
# 设置轴标签
plt.xticks(range(3),['A','B','C'], rotation=-30,fontsize=10) #顺时针旋转30度
# 添加图例
plt.legend('图例',loc='upper right') # 若作图时已经添加label,则无需传入图例参数 
# 添加数据标签
if isinstance(x[0], str):
	x = range(len(x))
for xl,yl in zip(x,y):
	plt.text(xl, yl+0.05, s='%.0f' % yl, ha='center', va= 'bottom',fontsize=9) # s为字符串,支持正则表达式及LaTex

重要概念

matplotlib重要概念

pyplot: pyplot可以视为作图命令的集合,该模块包含一系列命令,使之能像MATLAB一样作图。
figure: 创建图对象,囊括图中所有元素。
Axes: 包含图中大多数的元素。可将其简单地视为figure中的一个子图(subplots)。

import matplotlib.pyplot as plt
plt.plot()
fig = plt.figure()
fig, ax = plt.subplots(2,2) # 2*2布局
ax[0,1].plot(x, y)
sns.barplot(x,y, ax=ax[1,1]) # 或者调用seaborn作图
plt.tight_layout(h_pad=1.2, w_pad=2.0) # 调整子图间距

seaborn重要概念

context:上下文。可以直观地理解为图片各元素的尺度。分为四个档次:paper,notebook,talk,poster,坐标尺度依此增大。字面理解就是poster(海报)需要尺度较大,以便观看。
style:可以视为作图主题。分为dark(暗色),white(白色),ticks(坐标轴十字叉),darkgrid(暗色网格),whitegrid(白色网格)。
palette: 调色板。共6个主题:deep(深色),muted(浅色), pastel(柔和),bright(明亮),dark(暗色),colorblind(色盲)。默认颜色循环圈只包含6种颜色,可扩展至’hls’及’husl’。请参考官方文档。
hue:数据分组的键,即相当于pandas中groupby的key。

sns.set_context('talk')
sns.set_stype('dark')
cmap = sns.color_palette('green') # 创建色调
sns.set_palette(cmap) # 也可直接传入名称,例如‘husl’、'bright'

参考资料

官方指导文档
https://www.plob.org/article/16432.html
https://matplotlib.org/users/customizing.html
https://blog.csdn.net/llh_1178/article/details/77923033
https://blog.csdn.net/NockinOnHeavensDoor/article/details/80565764

你可能感兴趣的:(Python)