matplotlib使用
一、多个子图画法
import numpy as np import matplotlib.pyplot as plt data = pd.read_csv('zhcw.csv', header=None) x = data.iloc[:, 2:8] y = data.iloc[:, 8] plt.figure(20) for i in range(6): plt.subplot(2,3,i+1)#分成2*3区域,打开第i+1个画图 plt.bar(x.iloc[:, i].value_counts().sort_values().keys(), x.iloc[:, i].value_counts().sort_values().values) plt.grid() plt.show()
二、解决图中字体乱码问题
#coding=utf-8 import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np #解决乱码和负值的负号不出现问题 mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] =False x = np.linspace(-np.pi,np.pi,256,endpoint=True) y_cos,y_sin = np.cos(x),np.sin(x) def simple_plot(): plt.figure(figsize=(10,10),dpi=100) plt.title(u'简单曲线图',fontsize=10) plt.grid(True)#开启图片背景的网格线 plt.xlabel(u'X轴',fontsize=10) plt.xlim(-4.0,4.0) plt.xticks(np.linspace(-4,4,9,endpoint=True)) plt.ylabel(u'Y轴',fontsize=10) plt.ylim(-1.0,1.0) plt.yticks(np.linspace(-1,1,9,endpoint=True)) #b---blue #c---cyan #g---green #b----black #m---magenta #r---red #w---white #y----yellow #- 实线 #-- 短线 #-. 短点相间线 #: 虚点线 plt.plot(x,y_cos,'b--',linewidth=2.0,label=u'cos示例') plt.plot(x,y_sin,'g-',linewidth=3.0,label=u'sin示例') #设置图例位置,loc可以为[upper, lower, left, right, center] plt.legend(loc='upper left',shadow=True) #plt.legend(loc='upper left',shadow=True,prop=myfont) plt.savefig('simple.png') plt.show() simple_plot()
有时候即使设置了下面的格式,也不行(因为缺少字体)
import matplotlib.pyplot as plt import matplotlib as mpl #解决乱码和负值的负号不出现问题 mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False # 使显示图标自适应 mpl.rcParams['figure.autolayout'] = True
解决方法:
# 一、查看Matplotlib库配置文件所在的路径 import matplotlib print (matplotlib.matplotlib_fname()) # 返回类似的anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc # 二、下载字体:SimHei.ttf:http://www.xiazaiziti.com/210356.html # 三、拷贝字体到anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf(与一的路径有关) # 四、删除缓存 rm -rf */.cache/matplotlib/(看自己的用户路径下) # 五、修改配置文件 matplotlibrc(一路径下,修改下面三行,并去掉#号注释) font.family : sans-serif ... font.sans-serif : SimHei ... axes.unicode_minus : False # use unicode for the minus symbol
三、有时候想让x轴坐标倾斜
import matplotlib.pyplot as plt plt.xticks(rotation=30)#x坐标倾斜30度