matplotlib - noonecare/data_visualization GitHub Wiki

Interactive Mode

pycharm 的 console, Ipython 都支持 Interactive mode,相当于 Live Edit 画图。

%matplotlib inline

Jupter Notebook, python notebook 中在 notebook 中画图的指令,不然会把图画在 一个 pop up 的窗口中。

python 画图其实也就是 matlab 作图, 主要由两种方式:

  1. 函数式作图。
  2. 对象式作图。

python 完成的是对作图的抽象。重点还是如何作图(函数式作图),图包含哪些概念(对象式作图)。

图: figure

图中最重要的部分: axes

直角坐标系极坐标系(project=polar)等等。 axes 中包含 坐标轴(axes),坐标轴的刻度(xtick, xticklabel, ytick, ylabel),坐标轴表示的范围(xlim, ylim), 坐标轴名字(xlabel, ylabel)

图中可能还要包含图的名字(title)

图的背景色(fig = plt.figure("example", facecolor="red"); axes=fig.add_axes([0, 0, 0.8,0.8], axisbg="blue")

图中的数据点是否要加标注(annotation)

画在图中的线是实线虚线 波浪线 等等。

画在图中的点是 实点虚点 等等。

线是什么颜色(color="yellow"), 点是什么颜色(color="green")

等高线如何画, perceptive color 是什么概念(如何给等高线画图)。

如何写 图例(legend(handlers, labels)) 等等。 图例,你要得到 handlers: plt.plot();plt.bar() 等等在坐标系中画图的函数,都会返回一个 handlers 组成的 tuple。 所以要得到 handlers 带,代码可以这样写:

a, = plt.plot(range(10), range(10))
plt.legend((a,), ("blue"))
plt.show()

其实,plt.plot(); plt.bar() 都可以用一句语句画出多个图的。比如

import numpy as np

a, b = plt.plot(np.arange(10), np.arange(10), np.arange(10), np.sin(np.arange(10)))
plt.legend((a, b), ("example_1", "example_2"))
plt.show()

在对象式作图时,你没添加一个 作图的实体(比如axes) 都有很多属性,可以设置。

常用的图用:

  • 饼图(pie)
  • 散点图(scatter)
  • 柱状图(bar)
  • 等高线图

中文显示(牢记这段代码即可):

from matplotlib.font_manager import FontProperties myfont = FontProperties(fname="C:\Windows\Fonts\msyh.ttf") plt.legend((a1,b1), ("保费", "赔付"), prop=myfont) plt.title("历年保费和赔付数据", fontproperties=myfont)

- python matplotlib 中的很多作图函数,都有 fontproperties 或者 prop 属性。像上面的代码这样去指定 这些属性,就可以正确显示中文。


最后使用 matplotlib 在 python notebook 中画图时,需要填上:

%matplotlib inline