Matplotlib入门

画一个简单的图形
#画一条 [0, 2pi] 上的正弦曲线

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 50) # 生成一个包含50个元素的数组,这50个元素均匀的分布在 [0, 2pi] 的区间上
plt.plot(x, np.sin(x)) # 如果没有第一个参数x,图形的x轴坐标将不再是0到2pi,而应该是数组的索引范围
plt.show() # 显示图形,如果没有这行代码图像就不会显示
View Code

在一张图上绘制两个数据集

#在一张图上绘制两个数据集,函数sin(x)和sin(2x)的图形

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 50)
plt.plot(x, np.sin(x),
        x, np.sin(2 * x))  #调用plt.plot()的时候多传入了一个数据集,并用逗号与第一个数据集分隔开。
plt.show()
View Code

自定义图形的外观

#自定义图形的外观,展示多个数据集时,非常必要

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 50)
plt.plot(x, np.sin(x), 'r-o', #red红色,'-o' 代表实心点标记
        x, np.cos(x), 'g--') #green, '--' 代表虚线
plt.show()

'''
颜色: 蓝色 - 'b' 绿色 - 'g' 红色 - 'r' 青色 - 'c' 品红 - 'm' 黄色 - 'y' 黑色 - 'k'('b'代表蓝色,所以这里用黑色的最后一个字母) 白色 - 'w'
 
线: 直线 - '-' 虚线 - '--' 点线 - ':' 点划线 - '-.'
 
常用点标记 点 - '.' 像素 - ',' 圆 - 'o' 方形 - 's' 三角形 - '^' 
'''
View Code

使用子图

#使用子图,在一个窗口绘制多张图

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 50)
plt.subplot(2, 1, 1) # (行,列,活跃区)
plt.plot(x, np.sin(x), 'r')
plt.subplot(2, 1, 2)  
plt.plot(x, np.cos(x), 'g')
plt.show()

'''
调用plot()函数之前需要先调用subplot()函数,该函数的第一个参数代表子图的总行数,第二个参数代表子图的总列数,第三个参数代表活跃区域。
活跃区域代表当前子图所在绘图区域,绘图区域是按从左至右,从上至下的顺序编号。

'''
View Code

简单的散点图

# 简单的散点图,散点图是一堆离散点的集合

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 50)
y = np.sin(x)
plt.scatter(x,y)  #调用scatter()函数并传入x坐标和y坐标的数据
plt.show()
View Code

彩色映射散点图

# 彩色映射散点图,根据数据的大小给每个点赋予不同的颜色和大小,并在图中添加一个颜色栏

import matplotlib.pyplot as plt
import numpy as np

x = np.random.rand(1000)  #绘图数据随机产生
y = np.random.rand(1000)
size = np.random.rand(1000) * 50
colour = np.random.rand(1000)
plt.scatter(x, y, size, colour)  #scatter()函数新增两个参数,图上点的大小和颜色根据数据的大小变化
plt.colorbar()  #colorbar()函数添加了一个颜色栏
plt.show()
View Code

直方图

# 直方图

import matplotlib.pyplot as plt
import numpy as np

x = np.random.randn(1000)
plt.hist(x, 50)  # (数据,分组数)
plt.show()
View Code

标题,标签和图例

# 添加标题,坐标轴标记和图例

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 50)
plt.plot(x, np.sin(x), 'r-x', label='Sin(x)')
plt.plot(x, np.cos(x), 'g-^', label='Cos(x)')
plt.legend() # 展示图例
plt.xlabel('Rads') # 给x轴添加标签
plt.ylabel('Amplitude') # 给y轴添加标签
plt.title('Sin and Cos Waves') # 添加图形标题
plt.show()
View Code

 

python 画饼图

画饼图用到的方法为:

matplotlib.pyplot.pie()

参数为:

pie(x, explode=None, labels=None,  
    colors=('b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'),  
    autopct=None, pctdistance=0.6, shadow=False,  
    labeldistance=1.1, startangle=None, radius=None,  
    counterclock=True, wedgeprops=None, textprops=None,  
    center = (0, 0), frame = False )
View Code

参数说明:

x       (每一块)的比例,如果sum(x) > 1会使用sum(x)归一化
labels  (每一块)饼图外侧显示的说明文字
explode (每一块)离开中心距离
startangle  起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起
shadow  是否阴影
labeldistance label绘制位置,相对于半径的比例, 如<1则绘制在饼图内侧
autopct 控制饼图内百分比设置,可以使用format字符串或者format function
        '%1.1f'指小数点前后位数(没有用空格补齐)
pctdistance 类似于labeldistance,指定autopct的位置刻度
radius  控制饼图半径

返回值:
如果没有设置autopct,返回(patches, texts)
如果设置autopct,返回(patches, texts, autotexts)

patches -- list --matplotlib.patches.Wedge对象

texts autotexts -- matplotlib.text.Text对象

 
示例:
# -*- coding: utf-8 -*-
import numpy as np  
import matplotlib.mlab as mlab  
import matplotlib.pyplot as plt  
labels=['China','Swiss','USA','UK','Laos','Spain']
X=[222,42,455,664,454,334]  
 
fig = plt.figure()
plt.pie(X,labels=labels,autopct='%1.2f%%') #画饼图(数据,数据对应的标签,百分数保留两位小数点)
plt.title("Pie chart")
  
plt.show()  
plt.savefig("PieChart.jpg")
View Code

from matplotlib import pyplot as plt
 
#调节图形大小,宽,高
plt.figure(figsize=(6,9))
#定义饼状图的标签,标签是列表
labels = [u'第一部分',u'第二部分',u'第三部分']
#每个标签占多大,会自动去算百分比
sizes = [60,30,10]
colors = ['red','yellowgreen','lightskyblue']
#将某部分爆炸出来, 使用括号,将第一块分割出来,数值的大小是分割出来的与其他两块的间隙
explode = (0.05,0,0)
 
patches,l_text,p_text = plt.pie(sizes,explode=explode,labels=labels,colors=colors,
                                labeldistance = 1.1,autopct = '%3.1f%%',shadow = False,
                                startangle = 90,pctdistance = 0.6)
 
#labeldistance,文本的位置离远点有多远,1.1指1.1倍半径的位置
#autopct,圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数
#shadow,饼是否有阴影
#startangle,起始角度,0,表示从0开始逆时针转,为第一块。一般选择从90度开始比较好看
#pctdistance,百分比的text离圆心的距离
#patches, l_texts, p_texts,为了得到饼图的返回值,p_texts饼图内部文本的,l_texts饼图外label的文本
 
#改变文本的大小
#方法是把每一个text遍历。调用set_size方法设置它的属性
for t in l_text:
    t.set_size=(30)
for t in p_text:
    t.set_size=(20)
# 设置x,y轴刻度一致,这样饼图才能是圆的
plt.axis('equal')
plt.legend()
plt.show()
View Code

  Matplotlib画图步骤

plt.plot(x,y,ls=,lw=,c=,marker=,markersize=,markeredgecolor=,markerfacecolor,label=)

x:x轴上的数据       y:y轴上的数据

ls:line style折线风格("-","--","-.",":")       lw: line width线条宽度

c: color颜色

marker: 线条上点的形状;  markersize: 点的大小      markeredgecolor: 点的边框色     markerfacecolor:点的填充色

label: 文本标签

解决中文乱码的代码:

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

 
 
原文地址:https://www.cnblogs.com/ttrrpp/p/6678906.html