使用matplotlib绘制简单图表

绘制折线图(plot)

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 设置中文样式
plt.rcParams['axes.unicode_minus'] = False # 防止变成方块

x = np.arange(0,10,2)
y = np.array(2*x)
plt.xlabel('x轴') # x轴标签
plt.ylabel('y轴') # y轴标签
plt.title("简单的折线图",# 标题
          color='r',#设置颜色 
          size=20 # 字体大小
         )
plt.plot(x, # 表示x轴的数据
         y, # 表示y轴的数据
        'o-r', # fmt = '[marker][line][color]' # 格式化字符串:由标记、线条和颜色部分组成,每一个参数都是可选的
        linewidth=1, # 设置画出的线的粗细大小 # linewidth=lw
#         color='y', #设置颜色,在fmt的后面设置,会覆盖其颜色
        )
plt.legend(['折线图']) # 创建图例 # 在plot后面设置
plt.show()

使用matplotlib绘制简单图表_第1张图片

绘制条形图或堆积条形图(barh)

绘制条形图

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 设置中文样式
plt.rcParams['axes.unicode_minus'] = False # 防止变成方块

# 单组条形图
y = np.arange(5)
x1 = np.array([10,7,5,8,11])
x2 = np.array([11,8,6,9,12])
erro=[0.1,0.1,0.2,0.3,0.3]
error_test={'ecolor':'blue', # 误差棒的线条颜色设置 
            'capsize':1, # 表示误差棒边界横杆的大小
            'capthick':1, # 表示误差棒边界横杆的厚度
            'elinewidth':1 # 表示误差棒的线条宽度
           }
plt.title('简单的条形图')          
plt.barh(y,# 条形的y坐标值
        x1,# 条形图的长度
        height=0.4,# 条形的宽度
        left=0,# 条形左侧x的左边,默认从0开始
        align='center',# 有'center'和'edge'两个取值,'center'表示将条形与刻度线居中对齐,'edge'表示条形的底边与刻度线对齐,默认center 
        color='r',# 设置条形图的颜色
				tick_label=['a','b','c','d','e'],# 设置y轴坐标标签
        edgecolor='r', # 条形形边缘的颜色设置
        xerr=erro, # 绘制水平误差棒的范围
        yerr=erro, # 绘制垂直误差棒的范围
        error_kw=error_test # error_kw,表示误差棒的属性字典
       )
# 绘制第二组条形图
plt.barh(y+0.4, # 加上height的长度
        x2,
        height=0.4)
plt.show()

使用matplotlib绘制简单图表_第2张图片

绘制堆积条形图

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 设置中文样式
plt.rcParams['axes.unicode_minus'] = False # 防止变成方块

y = np.arange(5)
x1 = np.array([10,7,5,8,11])
x2 = np.array([11,8,6,9,12])
erro=[1,3,2,2.5,1.4] # 设置偏差数据
plt.title("简单的堆积条形图")
plt.barh(y, x1,tick_label=['a','b','c','d','e'],height=0.4)
plt.barh(y, x2,left=x1,height=0.4,xerr=erro)
plt.show()

使用matplotlib绘制简单图表_第3张图片

绘制柱形图或堆积柱形图(bar)

绘制柱形图

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 设置中文样式
plt.rcParams['axes.unicode_minus'] = False # 防止变成方块

x = np.arange(5)
hegiht= np.array([2,9,7,12,11])
y1 = np.array([3,1,2,6,8])
plt.title("简单的柱形图")
erro=[1,0.5,0.6,0.8,0.3]
error_test={'ecolor':'blue', # 误差棒的线条颜色设置 
            'capsize':1, # 表示误差棒边界横杆的大小
            'capthick':1, # 表示误差棒边界横杆的厚度
            'elinewidth':1 # 表示误差棒的线条宽度
           }
            
plt.bar(x, # 柱形的x坐标值
        hegiht, # 表示柱形的高度
        width=0.2, # 表示柱形的宽度,默认为0.8
        bottom=None, # 柱形底部的y坐标值,默认为0,绘制堆积柱形图时使用
        align='center', # 柱形对齐方式,有两个取值:"center"(居中对齐)、"edge"(将柱形的左边与刻度线对齐),默认是center
        tick_label=['a','b','c','d','e'], # 表示柱形对应的x轴刻度标签,默认值:无
        color='r',# 设置柱形图的颜色
        edgecolor='r', # 柱形边缘的颜色设置
        xerr=erro, # 绘制水平误差棒的范围
        yerr=erro, # 绘制垂直误差棒的范围
        error_kw=error_test # error_kw,表示误差棒的属性字典
       )
# 绘制第二组柱形图
plt.bar(x+0.2, # 加上第一组柱形图的宽度
        y1,width=0.2)
plt.show()

使用matplotlib绘制简单图表_第4张图片

绘制堆积柱形图

x = np.arange(5)
hegiht= np.array([2,9,7,12,11])
y1 = np.array([3,1,2,6,8])
plt.title("简单的堆积柱形图")
plt.bar(x, hegiht, width=0.2)
plt.bar(x, y1, 
        bottom=hegiht, # bottom等于前一个柱形图的高度
        width=0.2 # 柱形宽度
       )
plt.show()

使用matplotlib绘制简单图表_第5张图片

 绘制堆积面积图(stackplot)

绘制简单的堆积面积图

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 设置中文样式
plt.rcParams['axes.unicode_minus'] = False # 防止变成方块

x = np.arange(6)
y1 = np.array([1,4,3,5,6,7])
y2 = np.array([1,3,4,2,7,6])
y3 = np.array([3,4,3,6,5,5])
# 绘制堆积面积图
plt.title("简单的堆积面积图")
plt.stackplot(x,# 表示x轴的数据,可以是一维数组
              y1, y2, y3, # 表示y轴数据,可以是二维数组或一维数组
              baseline='zero'#'zero':恒定零基线,即简单的堆积图。
                #'sym':围绕零对称,有时称为“ThemeRiver”。
                #'wiggle':最小化平方斜率的总和。
                #'weighted_wiggle': 做同样的事情,但权重要考虑每一层的大小。它也被称为“流图”布局。
             )
plt.show()

使用matplotlib绘制简单图表_第6张图片

例子

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(5)
x = np.arange(5)
y = np.array([[20,34,30,35,37],[25,32,34,20,25],[21,31,37,21,28]])
baseline = ['zero','sym','wiggle','weighted_wiggle']
fig, axes = plt.subplots(1, 4, figsize=(13,3))
for ax, b in zip(axes, baseline): # zip序列解包,
    # zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象
    ax.stackplot(x, y, baseline = b)
plt.show()

使用matplotlib绘制简单图表_第7张图片

绘制直方图(hist)

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['KaiTi'] # 设置中文样式
plt.rcParams['axes.unicode_minus'] = False # 防止变成方块

# 准备100个随机测试的数据
data = np.random.randint(0,100,100)
data1 = np.random.randint(0,100,100)
plt.subplot(421)
plt.hist([data,data1],# 表示x轴的数据,可以为单个数组或多个数组的序列
         10,# bins,表示矩形的条数,默认为10
         histtype='barstacked'# 堆积直方图
					# rwidth 直方图柱体宽度
					# log 是否以对数形式展示y轴刻度 默认False
					# stacked 数据集是否以堆叠形式展示 默认False
					# density y轴显示频数或频率
					# cumulative y轴数据是否累加显示
					# weights 数据的权重数组
        )
plt.subplot(422)
plt.hist([data,data1], 10,histtype='bar',# 传统直方图
         orientation='horizontal'# 表示矩形条的摆放方式,默认为'vertical'垂直方向,horizontal是水平方向
        )
plt.subplot(423)
plt.hist([data,data1], 10,
         histtype='step'# 未填充的线条直方图
        )
plt.subplot(424)
plt.hist([data,data1], 10,histtype='stepfilled',# 填充的线条直方图
         align='left',# 表示矩形的对齐方式,可设置为'left','mid'或'right',默认为'mid'
        )
         
plt.xticks(np.arange(0,101,10))
plt.show()

使用matplotlib绘制简单图表_第8张图片

绘制饼图或圆环图

绘制饼图

## 饼图
import numpy as np
import matplotlib.pyplot as plt

## 设置中文
plt.rcParams['font.sans-serif'] = 'SimHei' 
plt.rcParams['axes.unicode_minus'] = False

data = np.array([500,1000,200,300,700])
plt.title("简单的饼图",color='r')
plt.pie(data,
        explode = ([0,0.3,0,0,0]),# 扇形离开圆心的距离
        labels=(['吃饭','购物','车费','洗脚','按摩']), # 扇形对应的标签文本
        autopct='%2.2f%%',# 表示控制扇形数值的字符串
        shadow=True,# 表示是否显示阴影
        startangle=90,# 起始绘制角度,默认x轴正方向逆时针旋转
        frame=True,# 是否显示坐标轴图框
        center=(0.5,0.5),# 饼图圆心的位置,值是一个坐标(x,y)
        radius=1.5# 饼图半径大小,默认为1
        # counterclock 数据绘制的方向,默认True,逆时针旋转
        # wedgeprops 控制扇形属性的字典,例如wedgeprops = {'width':0.7}
        # textprops 控制饼图中文本属性的字典,例如:{'font':'SimHei', 'color':'red', 'size':16}
       )
plt.show()

使用matplotlib绘制简单图表_第9张图片

绘制圆环图

import numpy as np
import matplotlib.pyplot as plt

## 设置中文
plt.rcParams['font.sans-serif'] = 'SimHei' 
plt.rcParams['axes.unicode_minus'] = False

data = np.array([500,1000,200,300,700])
plt.title("简单的圆环图",color='r',loc="center",pad=25)
# 绘制圆环图:外圆半径为1.5,楔形的宽度为0.7
plt.pie(data,radius=1.5,wedgeprops={'width':0.7},labels=(['吃饭','购物','车费','洗脚','按摩']),autopct='%2.2f%%',
        pctdistance=0.75 # 扇形数值距离圆心的距离
       )
plt.show()

使用matplotlib绘制简单图表_第10张图片

绘制散点图或气泡图(scatter)

绘制散点图

# 散点图 
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors
## 设置中文
plt.rcParams['font.sans-serif'] = 'SimHei' 
plt.rcParams['axes.unicode_minus'] = False

norm = colors.Normalize(0.3, 0.8)
num = 50
x = np.random.rand(num)
y = np.random.rand(num)
plt.title("简单的散点图")
plt.scatter(
            x,y,

             c = 'r',# 设置颜色
	           # cmap = 'b',# 设置颜色,仅当c是浮点数组时才使用cmap 
             # marker = '',
            norm=norm,# 表示数据宽度,在0~1之间
            vmin=0.3,# 表示亮度的最小值
            vmax=0.8,# 表示亮度的最大值,给出norm时使用vmin / vmax是会被忽略的
            alpha=0.8,# 表示透明度,介于 0(透明)和 1(不透明)之间。
            edgecolors='b',# 数据点的边缘颜色。
						#linewidths:表示数据点边缘的颜色
            )
plt.show()

使用matplotlib绘制简单图表_第11张图片

绘制气泡图

# 气泡图
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors
## 设置中文
plt.rcParams['font.sans-serif'] = 'SimHei' 
plt.rcParams['axes.unicode_minus'] = False

num = 50
x = np.random.rand(num)
y = np.random.rand(num)
plt.title("简单的气泡图")
area = (30*np.random.rand(num))**2 # 以点为单位的标记大小**2。默认为。rcParams['lines.markersize'] ** 2
plt.scatter(x,y,s=area)# 其他参数与散点图一致
plt.show()

使用matplotlib绘制简单图表_第12张图片

 绘制箱形图(boxplot)

# 箱型图
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["font.sans-serif"] = ["KaiTi"] # 设置中文样式
plt.rcParams["axes.unicode_minus"] = False # 防止负号变成方块
data1 = np.random.randn(100)
data2 = np.random.randn(100)
plt.title("简单的箱形图")
plt.boxplot([data1,data2],# 绘制箱形图的数据
            notch=True, # 箱型是否在中位线凹进去
            sym='x',  # 类似marker,异常值使用符号,默认为o
            vert=False, # 箱形的位置
            positions=([2,5]),  # 箱体的位置
            widths=([0.3,0.5]),  # 箱体的宽度
            patch_artist=True, # 箱型填充的颜色,默认False,若要填充颜色,改为True即可
            showcaps=True,   # 显示最大值和最小值的两根线
            showfliers=False,  # 是否显示异常值
            labels=(['箱形1','箱形2']), # 箱型图的标签
              # boxplot=(),  # 控制箱体属性的字典
            # filerprops=(), # 控制异常值属性的字典
            # meanprops=(), # 控制均值点的属性的字典
            # medianprops=() # 控制中位线属性的字典
            meanline=True # 是否用跨箱体的线条标出中位数,默认不使用
           )
plt.show()

使用matplotlib绘制简单图表_第13张图片

绘制雷达图(polar)

绘制简单的雷达图

# 雷达图
import matplotlib.pyplot as plt
import numpy as np
# 中文设置
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False

data = np.array([0.4,0.32,0.35,0.3,0.3,0.88])
angles = np.linspace(0,2*np.pi,6,endpoint=True)

labels_angles = np.array([0,60,120,180,240,300])# 设置指定度数范围

plt.polar(angles,# 表示每个数据点所在射线与极径的夹角 
          data # 指定数据的点到原点的距离
         )
plt.thetagrids(labels_angles,# 带有浮点数、度数的角度元组
              labels=['研究','艺术','企业','社会','传统','现实']# 标签
              )
# 填充多边形
plt.fill(angles, data,alpha=0.3)
plt.show()

使用matplotlib绘制简单图表_第14张图片

实例:霍兰德职业兴趣测试

# 实例:霍兰德职业兴趣测试
import matplotlib.pyplot as plt
import numpy as np
# 中文设置
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False
dim_num = 6
data = np.array([[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
                 [0.85, 0.35, 0.30, 0.40, 0.40, 0.30],
                 [0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
                 [0.30, 0.25, 0.48, 0.85, 0.45, 0.40],   
                 [0.20, 0.38, 0.87, 0.45, 0.32, 0.28],
                 [0.34, 0.31, 0.38, 0.40, 0.92, 0.28]
                ])
angles = np.linspace(0, 2*np.pi, dim_num, endpoint=False)# endpoint如果为 True,则停止是最后一个样本。否则,不包括在内。默认为真。
angles = np.concatenate((angles,[angles[0]])) # [angles[0]]数组以第一个数据结尾,因为上一个angles是以第一个数据开始的,所以第一个数据结尾相连
data = np.concatenate((data,[data[0]])) # 同上
# 纬度标签
rradar_labels = ['研究型(I)', '艺术型(A)', '社会型(S)',
                 '企业型(E)', '传统型(C)', '现实型(R)']
radar_labels = np.concatenate((rradar_labels,[rradar_labels[0]]))
# 绘制雷达图
plt.polar(angles, data)
# 设置极坐标标签
plt.thetagrids(angles * 180/np.pi, labels=radar_labels)
# 填充多边形
plt.fill(angles, data, alpha=0.3)
plt.show()

使用matplotlib绘制简单图表_第15张图片

绘制误差棒图(errorbar)

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["font.sans-serif"] = ["KaiTi"]
plt.rcParams["axes.unicode_minus"] = False

x = np.arange(5)
y = (25, 32, 34, 20, 25)
y_offset = (3, 5, 2, 3, 3)
plt.title("简单的误差棒图",color='y',size=20)
plt.errorbar(x,y, # 数据点的位置
             yerr=y_offset,# 表示误差的范围
             capsize=3, # 误差棒边界横杆的大小
             capthick=2,# 误差棒边界横杆的厚度
             elinewidth=2,# 误差棒的线条宽度
             fmt='o-r',# fmt = '[marker][line][color]' # 格式化字符串:由标记、线条和颜色部分组成,每一个参数都是可选的
             ecolor='b' # 误差棒的线条颜色
            )
plt.show()

使用matplotlib绘制简单图表_第16张图片

你可能感兴趣的:(python,matplotlib,可视化,python,matplotlib)