Matplotlib

一、matplotlib库的使用

import matplotlib.pyplot as plt

pyplot的绘制图像

import matplotlib.pyplot as plt
plt.plot([0, 2, 4, 6, 8], [3, 1, 4, 5, 2])
plt.ylabel("Grade")
plt.axis([-1, 10, 0, 6])
plt.savefig('test', dpi=600)
plt.show()
  • plt.plot(x,y) 当有两个以上的参数时,按照x轴和y轴顺序绘制数据点。
  • plt.axis() x轴和y轴的坐标轴起止范围。
  • plt.savefig() 将输出的图形存储为文件,默认PNG格式。


    test.png

pyplot的绘图区域

plt.subplot(nrows,ncols,plot_number)
  • plot_number 当前区域
import numpy as np
import matplotlib.pyplot as plt

def f(t):
    return np.exp(-t) * np.cos(2*np.pi*t)

a = np.arange(0.0, 5.0, 0.02)

plt.subplot(211)
plt.plot(a, f(a))

plt.subplot(2, 1, 2)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.savefig('test2', dpi=600)
plt.show()
test2.png

二、pyplot的plot()函数

plot()函数

plt.plot(x,y,format_string,**kwargs)
  • x:x轴数据,列表或数组,可选。
  • y:y轴数据,列表或数组。
  • format_string:控制曲线的格式字符串,可选。
  • **kwargs:第二组或更多(x,y,format_string)
    绘制多条曲线时,各条曲线的x不能忽略。

import matplotlib.pyplot as plt
import numpy as np
a = np.arange(10)
plt.plot(a, a*1.5, a, a*2.5, a, a*3.5, a, a*4.5)
plt.savefig('test0', dpi=600)
plt.show()
test0.png

控制曲线风格

format_string:控制曲线的格式字符串,可选。
由颜色字符 、风格字符、标记字符组成。

颜色符号 说明 颜色符号 说明
'b' 蓝色 'm' 洋红色
'g' 绿色 'r' 红色
'c' 青绿色 'y' 黄色
'k' 黑色 'w' 白色
'#008000' RGB某颜色 '0.8' 灰度值字符串
风格字符 说明
'-' 实线
'--' 破折现
'-.' 点划线
':' 虚线
'' ' ' 无线条
标记字符 说明 标记字符 说明 标记字符 说明
'.' 点标记 '1' 下花三角标记 'h' 竖六边形标记
',' 相熟标记(极小点) '2' 上花三角标记 'H' 横六边形标记
'o' 实心圈标记 '3' 左花三角形标记 '+' 十字标记
'v' 倒三角标记 '4' 右花三角标记 'x' x标记
'^' 上三角标记 's' 实心方形标记 'D' 棱形标记
'>' 右三角标记 'p' 实心五角标记 'd' 瘦菱形标记
'<' 左三角标记 '*' 星形标记 'I' 垂直线标记
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(10)
plt.plot(a, a*1.5, 'go-', a, a*2.5, 'rx', a, a*3.5, '*', a, a*4.5, 'b--')
plt.savefig('test3', dpi=600)
plt.show()

test3.png

plt.plot(x,y,format_string,**kwargs)
  • **kwargs:第二组或更多(x,y,format_string)
    color:控制颜色,color='green'
    linestyle:线条风格,linestyle='dashed'
    marker:标记风格,marker='0'
    markerfacecolor:标记颜色,markerfacecolor='blue'
    markersize:标记尺寸,markersize=20
    ...

三、pyplot的中文显示

方法一(不用)

用rcParams修改字体实现

import matplotlib.pyplot as plt
import matplotlib

matplotlib.rcParams['font.family']='SimHei'
plt.plot([3, 1, 4, 5, 2])
plt.ylabel("纵轴(值)")
plt.savefig('test00', dpi=600)
plt.show()
  • SimHe黑体


    test00.png

rcParams的属性

属性 说明
'font.family' 用于显示字体的名字
'font.style' 字体风格,正常'normal'或斜体'italic'
'font.size' 字体大小,整数字号或者'large'、'x-small'
rcParams['font.family']
中文字体 说明
'SimHei' 中文黑体
'Kaiti' 中文楷体
'LsSu' 中文隶书
'FangSong' 中文仿宋
'YouYuan' 中文幼体
'STSong' 华文宋体
import numpy as np
import matplotlib.pyplot as plt
import matplotlib

matplotlib.rcParams['font.family']="SimHei"
matplotlib.rcParams['font.size']=20

a = np.arange(0.0, 5.0, 0.02)

plt.xlabel('横轴:时间')
plt.ylabel('纵轴:振幅')
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.show()

第二种方法

在有中文输出的地方,增加一个属性:fontproperties

import matplotlib.pyplot as plt
import numpy as np

a = np.arange(0.0, 5.0, 0.02)

plt.xlabel('时间', fontproperties='SimHei', fontsize=20)
plt.ylabel('振幅', fontproperties='SimHei', fontsize=20)
plt.plot(a, np.cos(2*np.pi*a), 'r--')
plt.savefig('test02',dpi=400)
plt.show()
test02.png

四、pyplot的文本显示

pyplot的文本显示函数

函数 说明
plt.xlabel() 对x轴增加文本标签
plt.ylabel() 对y轴增加文本标签
plt.title() 对图形整体增加文本标签
plt.text() 在任意位置增加文本
plt.annotate() 在图形中增加带箭头的注释
import matplotlib.pyplot as plt
import numpy as np

a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), 'r--')

plt.xlabel('时间', fontproperties='SimHei', fontsize=20, color='green')
plt.ylabel('振幅', fontproperties='SimHei', fontsize=20)
plt.title(r'正弦波实例 $y=cos(2\pi x)$', fontproperties='SimHei', fontsize=25)
plt.text(2, 1, r'$\mu=100$', fontsize=15)

plt.axis([-1, 6, -2, 2])
plt.grid(True)
plt.show()
test03.png

plt.annatate(s,xy=arrow_crd,xytext=text_crd,arrowprops=dict)
import matplotlib.pyplot as plt
import numpy as np

a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2*np.pi*a), 'r--')

plt.xlabel('时间', fontproperties='SimHei', fontsize=20, color='green')
plt.ylabel('振幅', fontproperties='SimHei', fontsize=20)
plt.title(r'正弦波实例 $y=cos(2\pi x)$', fontproperties='SimHei', fontsize=25)
plt.annotate(r'$\mu=100$', xy=(2, 1), xytext=(3, 1.5),
                     arrowprops=dict(facecolor='black', shrink=0.1, width=2))

plt.axis([-1, 6, -2, 2])
plt.grid(True)
plt.show()
test04.png

五、pyplot的子绘图区域

plt.subplot2grid()

plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)
  • 理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始。

GridSpec类

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

gs = gridspec.GridSpec(3, 3)

ax1 = plt.subplot(gs[0, :])
ax2 = plt.subplot(gs[1, :-1])
ax3 = plt.subplot(gs[1:, -1])
ax4 = plt.subplot(gs[2, 0])
ax5 = plt.subplot(gs[2, 1])
test05.png

六、基础绘图函数

饼图plt.pie()

import matplotlib.pyplot as plt

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)

plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=90)

plt.axis('equal') #是否为扁饼图
plt.show()
t1.png

t2.png

直方图plt.hist()

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)
mu, sigma = 100, 20  #均值和标准差
a = np.random.normal(mu, sigma, size=100)

plt.hist(a, 10, narmed=1, histtypt='stepfilled', facecolor='b', alpha=0.75)
# 10  bin:直方图的个数
plt.title('Histogram')

plt.show()
t3.png

极坐标图

import numpy as np
import matplotlib.pyplot as plt

N = 10
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = 10 * np.random.rand(N)
width = np.pi / 2 * np.random.rand(N)

ax = plt.subplot(111, projection='polar')
bars = ax.bar(theta, radii, width=width, bottom=0.0)

for r, bar in zip(radii, bars):
    bar.set_facecolor(plt.cm.viridis(r / 10.))
    bar.set_alpha(0.5)

plt.show()
t4.png

散点图

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(10*np.random.randn(100), 10*np.random.randn(100), 'o')
ax.set_title('Simple')

plt.show()
t5.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容