首页 > 技术文章 > matplotlib使用

always-fight 2018-07-06 17:10 原文

一、多个子图画法

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度

 

推荐阅读