matplotlib 画图 --折线图 和 解决中文乱码的问题(ubuntu)

    1.模块

from matplotlib import pyplot as plt
from pylab import *
import numpy as np

2.画图

# x, y轴
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = np.array([1, 2, 3, 4, 5])

# 设置画布大小 1200*600
plt.figure(figsize=(12, 6))
# 设置标题
plt.title(u"全线xx监测曲线", fontproperties=zhfont1, color="black", fontsize=15)
plt.title(u"当前路线:%s  数据采集时间: %s" % ("A线路", "2019-10-10"), loc='left', pad=0.8, fontproperties=zhfont1, fontsize=8)
# 确定x, y轴范围
# plt.yticks([0, 1, 2, 3, 4, 5])
plt.xticks(x, ["A", "B", "C", "D", "E", "F", "G", "H"], rotation=0, fontsize=10)
# 设置x,y轴文字和字体大小
plt.xlabel(u"编号", fontproperties=zhfont1, fontsize=12)
plt.ylabel(u"xx厚度(mm)", fontproperties=zhfont1)
# 添加网格
plt.grid(linewidth=0.2)
# 设置画图线条的粗细
plt.plot(i[0], i[1], label=u"xx厚度", color="blue")
# 添加图例
plt.legend(ncol=2)
# 添加最高点
plt.plot([i[0], i[0]], [0, i[1]], linestyle="--")
# 去掉上右两条边框
ax = plt.gca()
ax.spines["right"].set_color('none')
ax.spines["top"].set_color('none')
# 对标点处做注释
bbox = dict(boxstyle="round", facecolor='gray', alpha=0.3, pad=1)
plt.annotate(u"编号:#%s-#%s xx厚度:%smm" % (i[0], i[0]+1, str(i[1])),
                         xy=(i[0], i[1]),
                         xytext=(i[0] - 10, i[1]-70),
                         xycoords="data",
                         textcoords='offset points',
                         bbox=bbox,
                         )
plt.show()
plt.close('all')

三 解决中文不显示的问题

matplotlib.rcParams["font.family"] = "SimHei"
matplotlib.rcParams["font.size"] = 12
# fname 为下载的字体库路径,注意SimHei.ttf字体的路径
zhfont1 = matplotlib.font_manager.FontProperties(fname="SimHei.ttf")

     1. 由于我是在ubuntu下使用miniconda,在这种情况下,出现中文不显示的问题。

      就如下面这样:

UserWarning: findfont: Font family ['SimHei'] not found. Falling back to DejaVu Sans.

 

我是先下载了 SimHei.ttf 放在了下面路径里面,看网上说能永久解决中文乱码的情况。

miniconda3/envs/spider_code/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/

可是这样设置了之后,我还是报上面的这个错误,部分显示了中文:

a.jpg

        2. 由于上面部分解决了问题,图片中图例,注释信息仍然中文显示乱码,所以尝试修改对应目录的文件matplotlibrc,                类似下面的路径

/home/huanghy/miniconda3/envs/spider_code/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc

              进到该文件中,找到下面三个部分,去掉前面的#注释,做出对应修改 :

找到以下三条信息,去掉前面的#
1.修改后面的值为SimHei
font.family         : SimHei
2.添加 SimHei     
font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif   
3.将默认的True改为False
axes.unicode_minus : False #解决负号'-'显示为方块的问题

      3.改完之后按道理来说应该就可以了,可是运行的时候仍然出现上面的报错。纠结了好久,也查了好久,发现matplotlib是有缓存的,必须要清除缓存后才能正常显示中文,matplotlib的默认缓存位置我放在下面,最后,总算解决了中文现实乱码的 问题,总结一下,其实这是个很简单的小问题,用点心就能够很快解决。

~/.cache/matplotlib

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值