Matplotlib自学指南

欲善其事,先利其器 pycharm使用matplotlib

1在pycharm中安装matplotlib
file->setting->project matplotlib->project Interpreter
1使用matplotlib库绘图,原理很简单,就是下面这5步:


image.png

2pycharm中正常显示图形界面
在代码前面加上
import matplotlib as mpl
mpl.use('TkAgg')


image.png

2 常用图形示例

绘制直线图

示例1

import matplotlib as mpl
mpl.use('TkAgg')
import matplotlib.pyplot as plt
plt.plot([1,2,3,4])
plt.ylabel('some numbers')
plt.show()
line1.png

示例2

#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#定义点 此处坐标问题 前一个列表表示x轴横坐标 后面一个表y轴纵坐标 前后对应 上例中未写则默认列表索引0,1,2,3,4,....顺序
plt.plot([3,5,7,9],[1,2,3,4])
#x标题
plt.ylabel('x title')
#y标题
plt.xlabel('y title')
#标题
plt.title('title')
plt.show()
image.png

点图

示例

#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#定义点 o代表点 b代表颜色blue r则代表颜色red
plt.plot([3,5,7,9],[1,2,3,4],'bo')
#x标题
plt.ylabel('x title')
#y标题
plt.xlabel('y title')
#标题
plt.title('title')
plt.show()
image.png

曲线图

示例1
f(x) = sin(x) 正弦函数曲线图 同理余弦函数图 f(x) = cos(x)

#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据类(常用于深度学习中,大数据中)
import numpy as np
#表示从0->5 之间间隔0.1生成列表
x = np.arange(-3.2, 3.2, 0.1)
#示例打印x查看数据结构
print(x)
#正弦公式 同理 y = np.cos(x) 切换余弦公式
y = np.sin(x)
plt.plot(x, y)
plt.show()
image.png

示例2
综合示例

#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据处理类(常用于深度学习中,大数据中)
import numpy as np
#表示从0->5 之间间隔0.1生成列表
x = np.arange(-3.2, 3.2, 0.1)
print(x)
y = np.sin(x)
plt.plot(x, y)

#此处在sin(x) 上面 间隔 0.5画sin(x)的点
m = np.arange(-3.2,3.2,0.5)
n = np.sin(m)
# bo表示蓝色小点,去掉则为直线
plt.plot(m,n,'bo')

#此处在话cox()x+0.2的直线
z = np.cos(x)
plt.plot(x,z)


#取cos(x)上最大值进行标记
#初始化列表x的第0项为最大值
maxIndex = 0
max = x[maxIndex]
#对x进行循环 并计算出最大值的点以及索引位置
for index in range(len(x)):
    b = np.cos(x[index])
    if(b>max):
        max = b
        maxIndex = index

#计算最大值对应的横坐标值
xVal = -3.2+0.1*maxIndex
#画点
plt.plot([xVal],max,'yo')


plt.show()
image.png

示例3
公式示例: 本例展现了ch(x) sh(x) th(x) 三个例子

import math
#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据处理类(常用于深度学习中,大数据中)
import numpy as np
#定义双曲余弦 正弦 正切
def ch(num):
    return (np.e**num + np.e**(-num))/2
def sh(num):
    return (np.e**num - np.e**(-num))/2
def th(num):
    return (np.e**num - np.e**(-num))/(np.e**num + np.e**(-num))
xValues = np.arange(-10,10,0.1)
zValues = np.arange(-10,10,1)

#坐标轴的移动
plt.axis()
l=[-10,10,-10,10]
plt.axis(l)
plt.axhline()
plt.axvline()
plt.axhline(4)

#根据公式计算纵坐标
shValues = sh(xValues)
chValues = ch(xValues)
sValues = th(zValues)
thValues = th(xValues)
#画图
plt.plot(xValues,thValues)
plt.plot(xValues,shValues)
plt.plot(xValues,chValues)
plt.plot(zValues,sValues,'ro')
plt.plot(xValues,xValues)
plt.show()
image.png

饼图

示例1

import math
#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据处理类(常用于深度学习中,大数据中)
import numpy as np

#定义标签
labels = 'A','B','C','D','E','F'
#定义各部分组成
fracs = [15.5,20.8,18.7,30.6,40,50]
#定义偏离值
explode = [0,0,0,0,0.1,0]
#定义颜色
#colors = ['red','blue','yellow','green','orange','#A9A9A9']
plt.pie(x=fracs,explode=explode,labels=labels,shadow=True,labeldistance=1.2,startangle=30,autopct='%3.1f %%')
plt.show()
image.png

柱状图

示例1最简单的柱状图

import math
#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据处理类(常用于深度学习中,大数据中)
import numpy as np
#定义数据
data = [10,20,50,100,30,70]
#bar(left, height, width=0.8, bottom=None) left为x轴方向值 height为y方向值 width为相对宽度
plt.bar(range(len(data)),data,width=0.4)
plt.show()
image.png

示例2 尝试改变横坐标值,底部高度,颜色

import math
#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据处理类(常用于深度学习中,大数据中)
import numpy as np
#定义数据
left = [1,4,6,9,12,14]
data = [10,20,50,100,30,70]
bottom = [5,10,15,20,25,30]
#设置颜色
color = ['red','blue','yellow','pink','purple','black']
#bar(left, height, width, bottom) left为x轴方向值 height为y方向值 width为相对宽度 bottom为底部高度
plt.bar(left,data,0.4,bottom,color=color)
plt.show()
image.png

示例3 柱状图样式设置 边框样式|填充|填充颜色|填充样式

import math
#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据处理类
import numpy as np
#定义数据
left = [1,4,6,9,12,14]
data = [10,20,50,100,30,70]
bottom = [5,10,15,20,25,30]
#设置颜色 可以不传或者只传一个值如 color = 'blue'
color = ['red','blue','yellow','pink','purple','black']
#bar(left, height, width, bottom) left为x轴方向值 height为y方向值 width为相对宽度 bottom为底部高度
# ec代表填充的颜色 lw 表示边框粗细 hatch表示填充样式 ,可取值为: / , \ , | , - , + , x , o , O , . , *
# ls表示linestyle即边框样式 风格有 -实线 --虚线 -.虚线和点结合 :点线
plt.bar(left,data,1,bottom,color=color,ec = 'blue',lw=1,hatch='o',ls='-.')
plt.show()
image.png

示例4 上下堆叠型

#有中文出现的情况,需要u'内容'
import math
#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt

#coding:utf-8 解决中文不显示问题
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

#python中常用的数据处理类
import numpy as np
#定义数据
size = 5
num = 100
x = np.arange(size)
a = np.random.random(size)
b = 1-a
print(x)
print(a)
print(b)
plt.bar(x,a*num,label='a',color='red')
plt.bar(x,b*num,bottom=a*num,label='b',color='yellow')
plt.xlabel(u'类别')
plt.ylabel(u'数量')
label=['x类别','y类别','z类别','a类别','b类别']
#设置x轴标签
plt.xticks(x, label, rotation=40)
plt.legend()
plt.show()
image.png

示例5 左右堆叠型

# 有中文出现的情况,需要u'内容'
import math
# 引入图形环境
import matplotlib as mpl

mpl.use('TkAgg')
# 引入画图类库
import matplotlib.pyplot as plt

# coding:utf-8 解决中文不显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# python中常用的数据处理类
import numpy as np

# 定义数据
size = 5
num = 100
x = np.arange(size)
a = np.random.random(size)
b = 1 - a
print(x)
print(a)
print(b)
#此处类似上线堆叠 移动左右一个宽度的位置
plt.bar(x, a * num, width=0.2, label='a', color='red')
plt.bar(x + 0.2, b * num, width=0.2, label='b', color='yellow')
plt.xlabel(u'类别')
plt.ylabel(u'数量')
label = ['x类别', 'y类别', 'z类别', 'a类别', 'b类别']
# 设置x轴标签
plt.xticks(x, label, rotation=40)
plt.legend()
plt.show()
image.png

示例6

# 有中文出现的情况,需要u'内容'
import math
# 引入图形环境
import matplotlib as mpl

mpl.use('TkAgg')
# 引入画图类库
import matplotlib.pyplot as plt

# coding:utf-8 解决中文不显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

# python中常用的数据处理类
import numpy as np

# 定义数据
a = np.array([50, 20, 100, 120, 70])
b = np.array([70, 60, 50, 15, 52])

#水平展示 类似bar用法
plt.barh(range(len(a)), a)
#注释b则仅仅显示单侧
plt.barh(range(len(b)), -b)
plt.show()

image.png
示例7 ❤

(希望某人会看到)

#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据处理类(常用于深度学习中,大数据中)
import numpy as np
def x(t):
    return 2*np.cos(t)-np.cos(2*t)
def y(t):
    return 5*np.sin(t)-np.sin(2*t)
b = np.arange(-100,100,0.1)
plt.plot(50*y(b),50*x(b),'r-')
plt.show()
image.png

散点图

示例1 f(x) = 2sin(x)+0.3x*x 做正态分布

#引入图形环境
#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据处理类(常用于深度学习中,大数据中)
import numpy as np
# 通过rcParams设置全局横纵轴字体大小
mpl.rcParams['xtick.labelsize'] = 24
mpl.rcParams['ytick.labelsize'] = 24
#定义方法 f(x) = 2*sin(x)*x^2
def func(x):
    return 2*np.sin(x)+0.3*x**2

#x轴方向上 (0,5)内采样100个点
x = np.linspace(0,5,100)
y = func(x)
#在y的基础上进行以偏差最大为0.3做正态分布
ydata = y+np.random.normal(scale=0.3,size=100)

引入图形环境

import matplotlib as mpl
mpl.use('TkAgg')

引入画图类库

import matplotlib.pyplot as plt

python中常用的数据处理类(常用于深度学习中,大数据中)

import numpy as np

在0,1取500分

x = np.linspace(0, 1, 500)
y = np.sin(4 * np.pi * x) * np.exp(-5 * x)
y = y+np.random.normal(scale=0.01,size=500)

子图

fig, ax = plt.subplots()

填充图

ax.plot(x, y, '.')

网格图

ax.grid(True, zorder=5)
plt.show()


![image.png](https://upload-images.jianshu.io/upload_images/11026233-412149479eb80bab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#画图
plt.figure('scatter')
plt.plot(x,ydata,'.')
plt.plot(x,y)
plt.show()
image.png

填充图

#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据处理类(常用于深度学习中,大数据中)
import numpy as np

#在0,1取500分
x = np.linspace(0, 1, 500)
y = np.sin(4 * np.pi * x) * np.exp(-5 * x)
#子图
fig, ax = plt.subplots()

#填充图
ax.fill(x, y, zorder=10)
#网格图
ax.grid(True, zorder=5)
plt.show()
image.png
#引入图形环境
import matplotlib as mpl
mpl.use('TkAgg')
#引入画图类库
import matplotlib.pyplot as plt
#python中常用的数据处理类(常用于深度学习中,大数据中)
import numpy as np

#在0,1取500分
x = np.linspace(0, 1, 500)
y = np.sin(4 * np.pi * x) * np.exp(-5 * x)
y = y+np.random.normal(scale=0.01,size=500)
#子图
fig, ax = plt.subplots()

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

推荐阅读更多精彩内容