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度

浙公网安备 33010602011771号