python Matplotlib库绘制常用图表(超全)

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 笔记

一、绘制圆环图


import numpy as np
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 建立坐标系
plt.subplot(1,1,1)
# 指明x值
x1 = np.array([8566,5335,7310,6482])
x2 = np.array([4283,2667,3655,3241])
# 绘图
labels = ['东区','北区','南区','西区']
plt.pie(x1,labels = labels,radius=1.0,wedgeprops=dict(width = 0.3,edgecolor = 'w'))
plt.pie(x1,radius=0.7,wedgeprops=dict(width = 0.3,edgecolor = 'w'))
# 添加注释
plt.annotate('完成量',xy=(0.35,0.35),xytext = (0.7,0.45),arrowprops = dict(facecolor = 'black',arrowstyle = '->'))
plt.annotate('任务量',xy=(0.75,0.20),xytext = (1.1,0.2),arrowprops = dict(facecolor = 'black',arrowstyle = '->'))
# 设置标题
plt.title(label = 'xxxxxxxx')
# 显示图表
plt.show()

效果如下:

10.png

二、绘制折线图


绘制折线图:

plt.plot(x,y,color,linestyle,linewidth,marker,markeredgecolor,markeredgwidth,

markerfacecolor,markersize,label)

x,y为x轴y轴的数据

color为yanse

linestyle为线的格式

linewidth表示线的宽度

marker表示折线每个点的形状

注:除了xy是必选项,其他均为可选项

import pandas as pd
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 数据源
df = pd.read_excel('/Users/caizhengjie/Desktop/数据分析数据/数据可视化/数据1.xlsx')
print(df)
#将图表的整个区域分成1行1列,且在第一个坐标系里面绘图
plt.subplot(1,1,1)
# 在第一个坐标系里面画折线
plt.plot(df['月份'],df['注册量'],color='k',linestyle='dashdot',linewidth=1,marker='o',markersize=5,label='注册用户数')
# 设置标题
plt.title('xxxxxxx',loc='center')
#添加数据标签
for a,b in zip(df['月份'],df['注册量']):
    plt.text(a,b,b,ha = 'center',va = 'bottom',fontsize = 10)
# 设置网格线
plt.grid(True)
# 设置图例
plt.legend()
plt.show()


效果如下:

11.png


三、绘制散点图


绘制散点图:

plt.scatter(x,y,s,c,marker,linewidths,edgecolors)

(x,y)表示散点的位置

s表示每个点的位置

c表示每个点的颜色

marker表示每个点的标记

linewidths表示每个散点的线宽

edgecolors表示每个散点外轮廓的颜色

import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 绘制散点图
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = [5.5,6.6,6,8.1,19.5,22.4,28.3,28.9]
y = [2.38,3.85,4.41,5.67,5.44,6.03,8.15,6.87]
# 绘图
plt.scatter(x,y,marker='o',s = 100)
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 设置x轴y轴的名称
plt.xlabel('平均气温')
plt.ylabel('啤酒销量')
# 设置网格线
plt.grid(True)
# 显示图表
plt.show()

效果如下:

12.png


四、绘制条形图


绘制条形图:

plt.barh(y,width,height,align,color,edgecolor)

y表示什么位置显示柱子,即纵坐标

width表示柱子在横向的宽度,即横坐标

height表示柱子在纵向的高度,即柱子的实际高度

align表示柱子的对齐方式

color表示柱子的颜色

edgecolor表示柱子的边缘颜色

import numpy as np
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 绘制条形图
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = np.array(['东区','南区','西区','北区'])
y = np.array([8556,6482,5335,7301])
# 绘图
# width指明条形的宽度,align指明条形图的位置默认是center
plt.barh(x,height=0.5,width=y,align='center')
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 添加数据标签
for a,b in zip(x,y):
    plt.text(b,a,b,ha='center',va='center',fontsize = 12)
# 设置x轴y轴的名称
plt.xlabel('区域')
plt.ylabel('任务量')
# 设置网格线
plt.grid(True)
# 显示图表
plt.show()

效果如下:13.png


五、绘制树地图


绘制树地图:用来表示同一等级中不同类别的占比关系,使用squairfy库

squairfy.plot(sizes,label,color,value,edgecolor,linewidth)

sizes待绘图数据

label不同类别的图例标签

color不同类别的颜色

value不同类别的数据标签

edgecolor不同类别之间边框的颜色

linewidth边框线宽

import numpy as np
import matplotlib.pyplot as plt
import squarify
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 指定每一块的大小
size = np.array([3.4,0.693,0.585,0.570,0.562,0.531,0.530,0.524,0.501,0.478,0.468,0.436])
# 指定每一块的文字标签
xingzuo = np.array(['未知','魔蝎座','天秤座','双鱼座','天蝎座','金牛座','处女座','双子座','射手座','狮子座','水瓶座','白羊座'])
# 指定每一块数值标签
rate = np.array(['34%','6.93%','5.85%','5.7%','5.62%','5.31%','5.3%','5.24%','5.01%','4.78%','4.68%','4.34%'])
# 指定每一块颜色
colors= ['steelblue','#9999ff','red','indianred','green','yellow','orange']
#绘图
plot = squarify.plot(sizes=size,label=xingzuo,color=colors,value=rate,edgecolor='white',linewidth = 3)
# 设置标题大小
plt.title('星座分布',fontdict={'fontsize':12})
# 除去坐标轴
plt.tick_params(top = 'off',right = 'off')
# 显示图表
plt.show()

效果如下:

15.png


六、绘制柱形图


绘制柱形图:

plt.bar(x,height,width = 0.8,bottom = None,align = ‘center’,color,edgecolor)

x:表示在什么位置显示柱形图

height表示每根柱子的高度

width表示每根柱子的宽度

bottom表示每根柱子的底部位置

align表示柱子的位置与x值的关系

color柱子颜色

edgecolor柱子边缘颜色

import numpy as np
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 普通柱形图实例
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = np.array(['东区','南区','西区','北区'])
y = np.array([8556,6482,5335,7301])
# 绘图
plt.bar(x,y,width=0.5,align='center',label = '任务量')
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 添加数据标签
for a,b in zip(x,y):
    plt.text(a,b,b,ha='center',va='bottom',fontsize = 12)
# 设置x轴y轴的名称
plt.xlabel('分区')
plt.ylabel('任务量')
# 显示图例
plt.legend()
# 显示图表
plt.show()
# 簇状柱形图实例
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = np.array([1,2,3,4])
y1 = np.array([8556,6482,5335,7301])
y2 = np.array([4283,2667,3655,3241])
# 绘图
plt.bar(x,y1,width=0.3,label = '任务量')
plt.bar(x+0.3,y2,width=0.3,label = '完成量')
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 添加数据标签
for a,b in zip(x,y1):
    plt.text(a,b,b,ha='center',va='bottom',fontsize = 12)
for a,b in zip(x+0.3,y2):
    plt.text(a,b,b,ha='center',va='bottom',fontsize = 12)
# 设置x轴y轴的名称
plt.xlabel('分区')
plt.ylabel('任务情况')
# 设置x轴刻度线
plt.xticks(x+0.15,['东区','南区','西区','北区'])
# 设置网格线
plt.grid(True)
# 设置图例
plt.legend()
# 显示图表
plt.show()
# 堆积柱形图
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = np.array(['东区','南区','西区','北区'])
y1 = np.array([8556,6482,5335,7301])
y2 = np.array([4283,2667,3655,3241])
# 绘图
plt.bar(x,y1,width=0.3,label = '任务量')
plt.bar(x,y2,width=0.3,label = '完成量')
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 添加数据标签
for a,b in zip(x,y1):
    plt.text(a,b,b,ha='center',va='bottom',fontsize = 12)
for a,b in zip(x,y2):
    plt.text(a,b,b,ha='center',va='top',fontsize = 12)
# 设置x轴y轴的名称
plt.xlabel('分区')
plt.ylabel('任务情况')
# 设置网格线
plt.grid(True)
# 设置图例
plt.legend(loc = 'upper center',ncol = 2)
# 显示图表
plt.show()


效果如下

20.png21.png22.png


七、绘制气泡图


import numpy as np
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 绘制散点图
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = np.array([5.5,6.6,6,8.1,19.5,22.4,28.3,28.9])
y = np.array([2.38,3.85,4.41,5.67,5.44,6.03,8.15,6.87])
# 绘图
# 根据y值的大小产生不同的颜色
colors = y*10
# 根据y值的大小产生不同的大小形状
area = y*100
plt.scatter(x,y,c=colors,marker='o',s = area)
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 添加数据标签
for a,b in zip(x,y):
    plt.text(a,b,b,ha='center',va='center',fontsize = 12,color = 'white')
# 设置x轴y轴的名称
plt.xlabel('平均气温')
plt.ylabel('啤酒销量')
# 设置网格线
plt.grid(True)
# 显示图表
plt.show()

效果如下:

25.png


八、绘制热力图


绘制热力图

plt.imshow(x,cmap)

x表示待绘图的数据,需要是矩阵形式

cmap配色方案,用来表明图表渐变的主题色

import numpy as np
import matplotlib.pyplot as plt
import itertools
import squarify
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 几个相关指标之间的相关性
cm = np.array([[1,0.082,0.031,-0.0086],
              [0.082,1,-0.063,0.062],
              [0.031,-0.09,1,0.026],
              [-0.0086,0.062,0.026,1]])
# 设置配色
cmap = plt.cm.cool()
plt.imshow(cm,cmap=cmap)
# 显示右边的颜色条
plt.colorbar()
# 设置x轴y轴的刻度标签
classes = ['负债率','信贷数量','年龄','家属数量']
tick_marks = np.arange(len(classes))
plt.xticks(tick_marks,classes)
plt.yticks(tick_marks,classes)
# 将数值显示在指定位置
for i,j in itertools.product(range(cm.shape[0]),range(cm.shape[1])):
    plt.text(j,i,cm[i,j],horizontalalignment = 'center')
# 设置网格线
plt.grid(False)
# 显示图表
plt.show()


效果如下:

26.png


九、绘制水平线和垂直线


绘制水平线和垂直线

目的:用来做参考对比

plt.axhline(y,xmin,xmax)

plt.axvline(x,ymin,ymax)


y/x 画水平线/垂直线时的横/纵坐标

xmin,xmax水平线的起点和终点

ymin,ymax垂直线的起点和终点

import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 建立坐标系
plt.subplot(1,2,1)
# 绘制一条y等于2且起点是0.2,终点是0.6的水平线
plt.axhline(y=2,xmin=0.2,xmax=0.6)
plt.subplot(1,2,2)
# 绘制一条x等于2且起点是0.2,终点是0.6的水平线
plt.axvline(x=2,ymin=0.2,ymax=0.6)
plt.show()


效果如下:

30.png


十、绘制箱型图


绘制箱形图

plt.boxplot(x,vert,widths,labels)

x待绘图数据源

vert箱形图方向,如果为True则表示为纵向,如果为False则表示为横向

widths箱形图宽度

labels箱形图标签

import numpy as np
import matplotlib.pyplot as plt
import squarify
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
y1 = np.array([866,2335,5710,6482,6120,1605,3813,4428,4631])
y2 = np.array([433,1167,2855,3241,1060,802,1906,2214,3515])
x = [y1,y2]
# 绘图
labels = ['注册人数','激活人数']
plt.boxplot(x,labels = labels,vert=True,widths=[0.2,0.5])
# 设置标题
plt.title(label = 'xxxxxxxx')
# 设置网格线
plt.grid(True)
# 显示图表
plt.show()

效果如下:31.png


十一、绘制雷达图


绘制雷达图

plt.polar(theta,r,color,marker,linewidth)

theta表示每一点在极坐标系中的角度

r表示每一点在极坐标系中的半径

color连接各个点之间线的颜色

marker每点的标记物

linewidth连接线的宽度

import numpy as np
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 建立极坐标系
# 参数polar=True表示建立极坐标系
plt.subplot(111,polar=True)
# 把整个圆分成5分
dataLenth = 5
# np.linspace表示在指定的间隔内返回均匀间隔的数字
angles = np.linspace(0,2*np.pi,dataLenth,endpoint=False)
labels = ['沟通能力','业务理解能力','逻辑思维能力','快速学习能力','工具使用能力']
data = [1,2,3,4,5]
# 闭合
data1 = np.concatenate((data,[data[0]]))
# 闭合
angles1 = np.concatenate((angles,[angles[0]]))
# 绘图
plt.polar(angles1,data1,color = 'r',marker = 'o')
# 设置x轴刻度
plt.xticks(angles1,labels)
# 设置标题
plt.title(label = 'xxxxxxxx')
# 显示图表
plt.show()


效果如下:

32.png


十二、绘制面积图


绘制面积图:

plt.stackplot(x,y,labels,colors)

(x,y)表示x/y坐标数值

labels不同系列图表的图例名

import numpy as np
import matplotlib.pyplot as plt
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 建立坐标系
plt.subplot(1,1,1)
# 指明x和y的值
x = np.array([1,2,3,4,5,6,7,8,9])
y1 = np.array([866,2335,5710,6482,6120,1605,3813,4428,4631])
y2 = np.array([433,1167,2855,3241,1060,802,1906,2214,3515])
# 绘图
labels = ['注册人数','激活人数']
plt.stackplot(x,y1,y2,labels = labels)
# 设置标题
plt.title('xxxxxxxxxx',loc='center')
# 设置x轴y轴的名称
plt.xlabel('月份')
plt.ylabel('注册与激活人数')
# 设置网格线
plt.grid(True)
# 设置图例
plt.legend()
# 显示图表
plt.show()

效果如下:


33.png


十三、绘制饼图


绘制饼图:

plt.pie(x,expolde,labels,colors,autopct,pctdistance,shadow,labeldistance,startangle,radius,counterclock,

wedgeprops,textprops,center,frame)

x 待绘图数据

expolde 饼图中每一块离圆心的距离

labels 饼图中每一块的标签

colors 饼图中每一块的颜色

autopct 控制饼图内数值的百分比格式

pctdistance 数据标签距中心的距离

shadow 饼图是否有阴影

labeldistance 每一块索引距离中心的距离

startangle 饼图的初始角度

radius 饼图的半径

counterclock 是否让饼图逆时针显示

wedgeprops 饼图内外边界属性

textprops 饼图中文本相关属性

center 饼图中心位置

frame 是否显示饼图背后的图框

import numpy as np
import matplotlib.pyplot as plt
import squarify
#解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus']=False
#在默认设置下matplotlib做出来的图表不是很清楚,可以将图表设置成矢量格式显示
# plt.savefig("test.svg", format="svg")
# 建立坐标系
plt.subplot(1,1,1)
# 指明x值
x = np.array([8566,5335,7310,6482])
labels = ['东区','北区','南区','西区']
# 让第一块离圆心远一点
explode = [0.15,0,0,0]
labeldistance = 1
# 绘图
plt.pie(x,labels = labels,autopct='%.0f%%',shadow=True,explode = explode,radius=1.0,labeldistance = labeldistance)
# 设置标题
plt.title(label = 'xxxxxxxx')
# 显示图表
plt.show()

效果如下:


36.png










相关实践学习
Polardb-x 弹性伸缩实验
本实验主要介绍如何对PolarDB-X进行手动收缩扩容,了解PolarDB-X 中各个节点的含义,以及如何对不同配置的PolarDB-x 进行压测。
相关文章
|
1月前
|
机器学习/深度学习 数据可视化 数据处理
Python数据可视化:探索Matplotlib库的强大功能
本文将深入探讨Python中用于数据可视化的重要工具之一——Matplotlib库。通过介绍Matplotlib库的基本概念、常用功能和实际应用案例,帮助读者更好地了解如何利用Matplotlib创建各种吸引人的数据图表。
|
9天前
|
Python
如何使用Python的Plotly库创建交互式图表?
Plotly是Python的交互式图表库,支持多种图表类型,如折线图、散点图、柱状图。使用步骤包括安装库、导入模块、准备数据、创建图表对象、添加数据和设置属性,最后显示或保存图表。
17 6
|
10天前
|
数据可视化 数据挖掘 定位技术
Python 基于 Matplotlib 实现数据可视化(二)
Python 基于 Matplotlib 实现数据可视化(二)
21 0
|
10天前
|
数据可视化 数据挖掘 Python
Python中数据分析工具Matplotlib
【4月更文挑战第14天】Matplotlib是Python的数据可视化库,能生成多种图表,如折线图、柱状图等。以下是一个绘制简单折线图的代码示例: ```python import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.figure() plt.plot(x, y) plt.title('简单折线图') plt.xlabel('X轴') plt.ylabel('Y轴') plt.show() ```
13 1
|
11天前
|
搜索推荐 数据可视化 Python
Matplotlib图表中的数据标签与图例设置
【4月更文挑战第17天】这篇文章介绍了如何在Python的Matplotlib库中设置数据标签和图例,以增强图表的可读性和解释性。主要内容包括:使用`text`函数添加基本和自定义数据标签,以及自动和手动创建图例。图例的位置和样式可通过`loc`和相关参数调整。文章强调了数据标签和图例结合使用的重要性,提供了一个综合示例来展示实践方法。良好的图表设计旨在清晰有效地传达信息。
|
11天前
|
数据可视化 定位技术 Python
Matplotlib与其他可视化库的对比与选择
【4月更文挑战第17天】本文对比了Python中的四个数据可视化库:Matplotlib(基础且高度定制)、Seaborn(基于Matplotlib,提供美观统计图表)、Plotly(交互式,支持3D和地图)和Bokeh(用于Web的交互式图表)。选择取决于灵活性、美观性、交互性和学习成本。根据具体需求,如快速生成图表或创建交互式Web可视化,用户可挑选最适合的库。
|
11天前
|
数据可视化 数据挖掘 Python
Matplotlib图表类型详解:折线图、柱状图与散点图
【4月更文挑战第17天】本文介绍了Python数据可视化库Matplotlib的三种主要图表类型:折线图、柱状图和散点图。折线图用于显示数据随时间或连续变量的变化趋势,适合多条曲线对比;柱状图适用于展示分类数据的数值大小和比较;散点图则用于揭示两个变量之间的关系和模式。通过示例代码展示了如何使用Matplotlib创建这些图表。
|
11天前
|
数据采集 数据处理 Python
Matplotlib实战:从数据处理到图表展示
【4月更文挑战第17天】本文介绍了使用Matplotlib进行数据图表展示的实战步骤,从数据处理(如使用pandas清洗数据)到选择图表类型,再到使用Matplotlib绘制折线图并进行美化定制(如调整线条样式、添加图例、设置坐标轴范围和添加网格)。最后,文章还展示了如何保存图表为图片文件。通过本文,读者可掌握利用Matplotlib创建精美图表的技能。
|
1月前
|
数据可视化 数据挖掘 Python
Python中的数据可视化工具Matplotlib简介与实践
在本文中,我们将介绍Python中常用的数据可视化工具Matplotlib,包括其基本概念、常用功能以及实际应用。通过学习Matplotlib,读者可以更好地理解和运用数据可视化技术,提升数据分析与展示的能力。
|
11月前
|
Linux Python
不可出外网的主机如何快速、方便、优雅的安装Python库?
不可出外网的主机如何快速、方便、优雅的安装Python库?
436 0
不可出外网的主机如何快速、方便、优雅的安装Python库?