用python matplotlib 画图

时间:2024-08-15 18:04:38

state-machine environment

object-oriente interface

figure and axes

backend and frontend

user interface bankends

hardcopy backends or non-interactive backends

confugure your backends

renderer : AGG

import matplotlib.pyplot as plt

plt.plot() 可一次画好几个, return al list of lines.

b-, ro, bo, k, r--, bs, g^, g-, go-, o, -, r, r+, rs

- solid line

-- dashed line

-. dash-dot line

: dotted line

. point marker

, pixel  marker

o cercle marker

v triangle_down marker

^ triangle_up marker

< triangle_left marker

> triangle_right marker

1 2 3 4 试试什么形状

s  square marker

p pentagon marker

* star marker

h H

+ plus marker

D diamond marker

d thin_diamond marker

| vline marker

- hline marker

b blue

g green

r red

c cyan

m magenta

y yellow

k black

w white

linewidth = 2.0,

label = 'line 1'

legend() 会根据你的线的label 生成,如果你设置每个line的label的话

line, = plt.plot(x, y, '-')

line就是这个线对象, 方法有:set_antialiased(False),

plt.setp(lines, color='r', linewidth=2.0)   这是keyword args.

plt.setp(lines, 'color', 'r', 'linewidth', 2.0)  这是MATLAB style, string value pairs

关于lines properties, 还有很多。可以用plt.setp(lines) 来看, 看看lw=2 什么意思

plt.axis([x-st, x-end, y-st, y-end])   #这个要放到plt.savefig()的最前面, 要不不起作用。。。

plt.ylabel()

plt.show()

plt.savefig()   #如果出现could not open display 的错误,将配置文件matplotlibrc复制到工作目录, 然后将backend改为AGG,服务器中配置文件位于/usr/lib64/python2.6/site-packages/matplotlib/mpl-data/matplotlibrc

gca()返回current axes

gcf() 返回current figure

plt.figure(1)  #可以不用写,因为如果你不指定的话,figure(1) 和subplot(1,1,1) 都是默认创建的

参数有figsize = (x,y)

plt.subplot(211)   # 当前是figure1的subplot 211

plt.plot(x1, f(x1), x2, 'bo', f(x2), 'k' )

plt.subplot(212) #当前是figure1 的subplot 212

plt.plot(x, f(x), 'r--')

subplot(rows, cols, fignum), 所以一共有rows*cols个图, fignum 指定是第几个

如果想更个性的话,用axes(left, bottom, width, height) 每个值都介于0和1之间。

clf()  clear current figure

cla()   clear current axes

the mamory required for a figure is not completely realeased until the figure is closed with close()

plt.text() 可以让你在图的任意位置加上文字信息。  plt.xlabel(), plt.ylabel(), plt.title() 在指定位置加文字信息。

just as with lines above, you can customize the propertied by passing keyword arguments into the text functions or using setp()

eg: plt.xlebel('hehe', fontsize=14, color='red')

plt.grid(True) 默认是False

plt.annotate('luanqibazaodezhushi', xy=(2,1), xytext=(3, 1.5),  arrowprops=dict(facecolor='black', shrink=0.05),) 加上注释文本

pltylim(-2, -2)

一下是一个做柱状图的例子, 从中我们可以看到,axes对象的方法有:

bar(), 可以设置color='coral', label='1/1'...

legend()将上面有label的提取出来

set_xticks() 设置x-axis的坐标

set_xticklabels()

set_xlabel('hehe', fontsize=30), 可以设置fontsize=30, 对x-axis的说明

set_ylabel(),同set_xlabel, 也可以设置字体大小

set_title(), 也有fontsize设置字体大小

用面向对象的方法更能控制图形,而不是依靠状态环境。

fig = plt.figure(1, figsize=(12,6))

ax = fig.add_subplot(111)

ax.bar(每个bar的起始点,数组代表高度, 每个bar的宽度, *kwargs)

宽度width即可以是一个固定值,即所有的bar都用这个值,也可以是一个数组,不同的bar对应不同的值。

ax.set_xticks(数组)     # 坐标, 一般在每个bar的中间部位

ax.set_xticklabels(数组)   #坐标上的说明信息, 对这个bar的一个说明

ax.set_xlabel('Country')

ax.set_ylabel('GDP')

ax.set_title('Top 10 GDP Country', bbox={'facecolor':'0.8', 'pad':5})

plt.show()

例:

https://github.com/freemao/call-base-each-snp-site/blob/master/line_plot.py

https://github.com/freemao/call-base-each-snp-site/blob/master/bar_plot.py

by freemao

FAFU

free_mao@qq.com