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 作图, 主要由两种方式:
- 函数式作图。
- 对象式作图。
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