其实对于Matplotlib我是一个相爱相杀的库,也有由于其是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。同时在日常使用过程中多是作为一个数据可视化参考来进行使用,为什么我尽量不选择它来进行作图呢?主要原因就是对于标题x、y轴的标题大小调节比较费劲,很多时候我宁愿选择跑出结果用excel进行图表绘制。
1. 中英文问题
正常使用的过程中,经常会因为行x,y轴与标题的中文出现中英文问题,这个时候一般需要针对性的在百度会提示一些下载中文字体(黑体,看准系统版本)等等问题,实际上我们并没必要下载中文字体,需要在代码初始添加:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
但是针对macOS会遇到无法使用的问题,需要针对性的选择macOS兼用的字体格式:
# 支持中文
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
当然如果你想一劳永逸用SimHei字体,你需要去针对性的下载这个字体库,并进行相关操作如下所示(针对macos)。
下载字体
http://www.fontpalace.com/font-download/SimHei/
复制字体到matplotlib字体目录下
cp SimHei.ttf ~/.pyenv/versions/3.6.4/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf
matplotlibrc配置文件修改
终端运行python后执行如下命令获取matplotlibrc配置文件路径
import matplotlib
matplotlib.matplotlib_fname()
记下地址,终端切换到该地址后修改matplotlibrc文件,添加如下内容:
vi matplotlibrc
添加内容:
font.family : sans-serif
font.sans-serif : SimHei, DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
其中SimHei为第一步下载的字体名称
清除matplotlib字体缓存
rm -rf ~/.matplotlib/*.cache
rm fontList.json
重新运行python程序即可正常显示中文,也就解决macOS不存在相关中文字体库的问题。
2. 图像分辨率问题
正常情况下经常需要设置图像的分辨率便于下一步的保存,因此可以添加下面的代码:
import matplotlib.pyplot as plt
plt.rcParams['savefig.dpi'] = 300 #图片像素
plt.rcParams['figure.dpi'] = 300 #分辨率
3. 其他有关轴标题与title问题
#设置折线图x,y的数据范围以及颜色,曲线样式
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
#x轴的取值大小
plt.xlim([0.0, 1.0])
#y轴的取值大小
plt.ylim([0.0, 1.05])
#x,y轴标题设置与字体大小设置
plt.xlabel('假阳率', fontdict={
'size': 14})
plt.ylabel('真阳率', fontdict={
'size': 14})
plt.title('最大信息系数ROC曲线', fontdict={
'size': 14})
#图例的位置范围
plt.legend(loc="lower right")
#保存图片
plt.savefig("最大信息系数ROC曲线.jpg")