一篇文章让你学会绘画十一种常见数据分析图折线图,直方图,散点图,雷达图等等

本篇博文主要内容ython Pyplot中的十一个常用绘图,包括参数说明,代码,运行结果。
有问题可以+Q180096010一起交流学习~

目录

 1. 折线图

plt.plot绘制折线图代码展示:

2. 散点图

scatter绘图示例1:

3. 直方图 

bar绘图示例1:

bar绘图示例2:

4. 饼图

pie绘图示例:

5. 箱线图 

boxplot绘图示例:

6.概率图 

绘制概率图:

7.雷达图 

绘制某学生成绩信息的雷达图

8.流向图 

流向图绘制

9.绘图中的表格设置 

在绘图中显示数据表格

10. 极坐标图 

绘制极坐标图

11. 词云图 

11.1 安装相关的包

11.2 词云生成过程

 11.3 词云生成示例:

结尾:


 1. 折线图

折线图(Line Chart)是一种将数据点按照顺序连接起来的图形,也可以看作是将散点图按照X轴坐标顺序链接起来的图形。折线图的主要功能是查看因变量y随着自变量x改变的趋势,最适合用于显示随时间(根据常用比例设置)而改变的连续数据。同时,还可以看出数量的差异

绘制折线图plot的格式:

 

matplotlib.pyplot.plot(*args,**kwargs)

plot函数在官方文档的语法中只要求填入不定长参数,实际可以填入的主要参数及其说明见下表1

表1 plot主要参数及其说明

参数 说明 x,y 接收array,表示X轴和Y轴对应的数据,无默认 color 接收特定string,指定线条的颜色,默认为None linestyle 接收特定string,指定线条的类型,默认为“-” marker 接收特定的string,表示绘制的点的类型,默认为None alpha

接收0~1的小数,表示点的透明度,默认为None


 

color参数的8种常用的缩写见表2
表2 color参数的常用颜色缩写
颜色缩写 代表的颜色
b 蓝色
g 绿色
r 红色
c 青色
m 品红
y 黄色
k 黑色
w 白色

 

plt.plot绘制折线图代码展示:
 

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x = np.arange(9)
y = np.sin(x)
z = np.cos(x)
#marker数据点样式,linewidth线宽,linestyle线型样式,color颜色
plt.plot(x,y,marker='*',linewidth=1,linestyle='--',color='orange')
plt.plot(x,z)
plt.title('matplotlib AK')
plt.xlabel('height',fontsize=15)
plt.ylabel('width',fontsize=15)
#设置图例
plt.legend(['Y','Z'],loc='upper right')
plt.grid(True)
plt.show()

 

2. 散点图

        散点图(Scatter Diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,使用坐标点(散点)的分布形态反映特征间统计关系的一种图形。值时由点在图表中的位置表示,类别是由图表中的不同标记表示 ,通常用于比较跨类别的数据

        scatter方法的格式:

        matplotlib.pyplot.scatter(x,s=None,c=None,marker=None,alpha=None)

        scatter函数主要参数及其说明见表3
 

scatter的主要参数及其说明
参数 说明
x,y 接收array,表示X轴和Y轴对应的数据,无默认
s

接收数值或一维的array,指定点的大小,若传入一维array则表示每个点的大小,默认为None

c 接收颜色或一维的array,指定点的颜色,若传入一维array则表示每个点的颜色,默认为None
marker 接收特定的string,表示绘制的点的类型,默认为None
alpha 接收0~1的小数,表示点的透明度,默认为None





 

scatter绘图示例1:

fig.ax = plt.subplots()
plt.rcParams['font.family'] = ['SimHei']      #用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False   #用来正常显示符号
x1 = np.arange(1,30)
y1 = np.sin(x1)
ax1 = plt.subplot(1,1,1)
plt.title('散点图 AK')
plt.xlabel('X')
plt.ylabel('Y')
lvalue = x1
ax1.scatter(x1,y1,c='r',s=100,linewidths=lvalue,marker='o')
plt.legend('x1')
plt.show()

 scatter绘图示例2:

fig,ax = plt.subplots()
plt.rcParams['font.family'] = ['SimHei']      #用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False   #用来正常显示符号
for color in ['red','green','blue']:
    n = 500
    x,y = np.random.randn(2,n)
    ax.scatter(x,c=color,label=color,alpha=0.3,edgecolor='none')
ax.legend()
ax.grid(True)
plt.show()

  

3. 直方图 

        直方图(Histogram)又称质量分布图,是统计报告图的一种,由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据所属类别,纵轴表示数量或者占比。用直方图可以比较直观地看出产品质量特性的分布状态,便于判断其总体质量分布情况。直方图可以发现分布表无法发现的数据模式、样本的频率分布和总体的分布。

绘制直方图函数bar格式:

matplotlib.pyplot.bar(left,height,width = 0.8,bottom = None,hold = None,data = None)

函数bar的常用参数及其说明见下表4

表4 bar常用参数及其说明
参数 说明
left 接收array,表示X轴数据,无默认
height 接收array,表示X轴所代表数据的数量,无默认

width

接收0~1的float,指定直方图宽度,默认为0.8
color 接收特定string或者包含颜色字符串的array,表示直方图颜色,默认为None











 

bar绘图示例1:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
fig,axes = plt.subplots(2,1)
data = pd.Series(np.random.randn(16),index=list('abcdefghijklmnop'))
data.plot.bar(ax = axes[0],color='k',alpha=0.7)
data.plot.barh(ax = axes[1],alpha=0.7)

bar绘图示例2:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.family'] = ['SimHei']      #用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False   #用来正常显示符号
fig,ax = plt.subplots()
x = np.arange(1,6)
y1 = np.random.uniform(1.5,1.0,5)
y2 = np.random.uniform(1.5,5)
plt.bar(x,width = 0.35,facecolor='lightskyblue',edgecolor = 'white')
plt.bar(x+0.35,y2,facecolor='yellowgreen',edgecolor = 'white')
plt.show()

4. 饼图

        饼图(Pie Graph)用于表示不同分类的占比情况,通过弧度大小来对比各种分类,饼图可以比较清楚的反映出部分与部分、部分与整体之间的比例关系,易于显示每组数据相对于总数的大小,而且显现的方式直观。

        绘制饼图pie方法的格式:

matplotlib.pyplot.pie(x,explode = None,labels = None,color = None,autopct = None,pctdistance = 0.6,shadow=false,labeldistance=1.1,startangle=None,radius=None,...)

pie函数常用参数及其说明见表5
 

表5 pie函数常用参数及其说明
参数 说明
x 接收array,表示用于绘制饼图的数据,无默认
explode 接收array,指定项离饼图圆心为n个半径,默认为None
labels 接收array,指定每一项的名称,默认为None
color 接收特定的string或包含颜色字符串的array,表示颜色,默认为None
autopct 接收特定的string,指定数值的显示方式,默认为None
pctdistance float型,指定每一项的比例和距离饼图圆心n个半径,默认为0.6
labeldistance float型,指定每一项的名称和距离饼图圆心的半径数,默认为1.1
radius float型,表示饼图的半径,默认为1


 

pie绘图示例:

plt.figure(figsize=(6,6))
#建立轴的大小
labels = ['Springs','Summer','Autumn','Winter']
x = [15,30,45,10]
explode = (0.05,0.05,0.05)
#这个是控制分离的距离的,默认饼图不分离
plt.pie(x,labels = labels,explode = explode,startangle = 60,autopct='%1.1f%%')
#autopct在图中显示比例值,注意值的格式
plt.title('Rany days by season')
plt.show()

5. 箱线图 

        箱线图(Boxplot)也称盒须图,通过绘制反映数据分布特征的统计量,提供有关数据位置和分散情况的关键信息,尤其在比较不同特征时,更可表现其分散程度差异。箱线图使用数据中的5个统计量(最小值,下四分位数,中位数,上四分位数和最大值)来描述数据,它可以粗略地看出数据是否具有对称性,分布的分散程度等信息,特别可以用于对几个样本的比较,还可以粗略检测异常值。

        boxplot函数的格式:

matplotlib.pyplot.boxplot(x,notch = None,sym = None,vert = None,whis = None,positions = None,width = None,patch_artist = None,meanline = None,...)

boxplot函数常用参数及其说明见表6:

表6 boxplot函数常用参数及其说明
参数 说明
x 接收array,表示用于绘制箱线图的数据,无默认
notch 接收boolean,表示中间箱体是否有缺口,默认为None
sym 接收特定的string,指定异常点形状,默认为None
vert 接收boolean,表示图形是纵向的或者横向,默认为None
positions 接收array,表示图形位置,默认为None
width 接收scalar或者array,表示每个箱体的宽度,默认为None
labels 接收array,指定每一个箱线图的标签,默认为None
meanline 接收boolean,表示是否显示均值线,默认为False

boxplot绘图示例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
np.random.seed(2)#设置随机种子
df = pd.DataFrame(np.random.rand(5,4),columns = ['A','B','C','D'])
#生成0~1的5*4维度数据并存入4列DataFrame中
df.boxplot()
plt.show()

 

6.概率图 

        概率图模型时图灵获得者Pearl提出的用来表示变量间概率依赖关系的理论,正态分布又名高斯分布。正太概率密度函数normpdf(X,mu,sigma),其中,X为向量,mu为均值,sigma为标准差。

绘制概率图:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import norm
fig,ax = plt.subplots()
plt.rcParams['font.family'] = ['SimHei']      #用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False   #用来正常显示符号
np.random.seed(1587554)
mu = 100
sigma = 15
x = mu+sigma*np.random.randn(437)
num_bins = 50
n,bins,patches = ax.hist(x,num_bins,density=1,stacked=True)
y = norm.pdf(bins,sigma)
ax.plot(bins,'--')
fig.tight_layout()
plt.show()

7.雷达图 

        雷达图也称网络图、星图、蜘蛛网图、不规则多边形、极坐标图等。雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。轴的相对位置和角度通常是无信息的。雷达图相当于平行坐标图,轴径向排列。

绘制某学生成绩信息的雷达图

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
#某学生的课程与成绩
courses = ['数据结构','数据可视化','高数','英语','软件工程','组成原理','C语言','体育']
scores = [82,95,78,85,88,76,88]
dataLength = len(scores) #数据长度
#angles数组把圆周等分为dataLength份
angles = np.linspace(0,2*np.pi,dataLength,endpoint=False)
scores.append(scores[0])
angless = np.append(angles,angles[0])  #闭合
#绘制雷达图
plt.polar(angless,#设置角度
      scores,#设置各个角度上的数据
      'rv--',#设置颜色、线型和端点符号
      linewidth=2)  #设置线宽
#设置角度网络标签
plt.thetagrids(angles*180/np.pi,courses,fontproperties='simhei',fontsize=12,color='k')
#填充雷达图内部
plt.fill(angless,scores,facecolor='g',alpha=0.2)
plt.show()

8.流向图 

        在运输问题中,常常需要表明产地的产量、销地的销量,以及流向和流量的交通图,此时可以用到流向图。流向图能够直观地展示数据流向,揭示出运动中的一些规律或现象。

流向图绘制

import numpy as np
import matplotlib.pyplot as plt
Y,X = np.mgrid[-3:3:100j,-3:3:100j]
U = -1-X**2+Y
V = 1+X-Y**2
speed = np.sqrt(U*U+V*V)
plt.streamplot(X,Y,U,V,color=U,linewidth = 2,cmap = plt.cm.autumn)
plt.colorbar()
f,(ax1,ax2) = plt.subplots(ncols=2)
ax1.streamplot(X,density=[0.5,1])
lw = 5*speed/speed.max()
ax2.streamplot(X,density=0.6,linewidth=lw)
plt.show()

 

9.绘图中的表格设置 

        在绘图中,有时候需要同时显示数据表格。Matplotlib在绘图中提供了table方法可以同时显示数据表格

在绘图中显示数据表格

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['SimHei']
data = [[66386,174296,75131,577908,32015],[58230,381139,78045,99308,160454],[89135,80552,152558,497981,603535],[78415,81858,150656,193263,69638],[139361,331509,343164,781380,52269]]
columns = ('Freeze','Wind','Flood','Quake','Hail')
rows = ['%d year'% x for x in (100,50,20,10,5)]
values = np.arange(0,2500,500)
value_increment = 1000
colors = plt.cm.BuPu(np.linspace(0,0.5,len(columns)))
n_rows=len(data)
index = np.arange(len(columns))+0.3
bar_width=0.4
y_offset = np.array([0.0]*len(columns))
cell_text = []
for row in range(n_rows):
    plt.bar(index,data[row],bar_width,bottom=y_offset)
    y_offset = y_offset+data[row]
    cell_text.append(['%1.1f'%(x/1000.0) for x in y_offset])
colors = colors[::-1]
cell_text.reverse()
the_table = plt.table(cellText=cell_text,rowLabels=rows,rowColours = colors,colLabels = columns,loc = 'bottom')
plt.subplots_adjust(left=0.2,bottom=0.2)
plt.ylabel("Loss in ${0}'s".format(value_increment))
plt.yticks(values*value_increment,['%d' % val for val in values])
plt.xticks([])
plt.title('气象灾害损失')
plt.show()

10. 极坐标图 

        在平面投影中,由X轴和Y轴定位坐标;而在极坐标投影中,需要以半径和角度的形式定位坐标。极坐标投影中的半径以圆半径的大小显示,并且以每个角度为0°的圆的角度为起点投影角度。要生成极坐标投影,需要将投影类型定义为极坐标。

绘制极坐标图

import numpy as np
import matplotlib.pyplot as plt
r = np.linspace(0,2,100)
theta = 2*np.pi*r
fig = plt.figure(figsize=(13,4))
ax1 = plt.subplot(121,projection='polar')
ax1.scatter(theta,r,label='Polar Projection',s=10)
ax1.legend(bbox_to_anchor=(0.85,1.35))
ax2 = plt.subplot(122)
ax2.scatter(theta,s=10)
ax2.legend(bbox_to_anchor=(0.85,1.35))
ax2.set_xlabel('R')
ax2.set_ylabel(r'$\theta$')

11. 词云图 

        词云用于对网络文本中出现频率较高的关键词予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只需要一眼扫过文本就可以领略文本的主旨。


11.1 安装相关的包

        绘制词需要WordCloud和jieba包。jieba用于从文本的句子里分割出词汇。两个包的安装语句:

pip install wordcloud
pip install jieba

11.2 词云生成过程

        一般生成词云的过程为:

1)使用Pandas读取数据并将需要分析的数据转化为列表
2)对获得的列表数据使用分词工具jieba进行遍历分词

3)使用WordCloud设置词云图片的属性、掩码和停用词,并生成词云图像。

 11.3 词云生成示例:

生成示例在之前博文有发布过,可以参考进行学习。
https://blog.csdn.net/weixin_52797843/article/details/122547594?spm=1001.2014.3001.5502

结尾:


        关于python pyplot的十一个常用的绘图到此就分享结束了,感谢大家浏览阅读,有问题可以私信或者加Q 180096010一起交流学习。

觉得文章有用的同学,可以收藏方便以后学习哟~。

原文地址:https://blog.csdn.net/weixin_52797843

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Python中的函数(二) 在上一篇文章中提到了Python中函数的定义和使用,在这篇文章里我们来讨论下关于函数的一些更深的话题。在学习C语言函数的时候,遇到的问题主要有形参实参的区别、参数的传递和改变、变量的作用域。同样在Python中,关于对函数的理解和使用也存在这些问题。下面来逐一讲解。一.函
Python中的字符串 可能大多数人在学习C语言的时候,最先接触的数据类型就是字符串,因为大多教程都是以"Hello world"这个程序作为入门程序,这个程序中要打印的"Hello world"就是字符串。如果你做过自然语言处理方面的研究,并且用Python
Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程。下面就来了解一下如何在Python中进行对象编程。一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法。 类是对现实世界中一些事物的封装,
Python面向对象编程(二) 在前面一篇文章中谈到了类的基本定义和使用方法,这只体现了面向对象编程的三大特点之一:封装。下面就来了解一下另外两大特征:继承和多态。 在Python中,如果需要的话,可以让一个类去继承一个类,被继承的类称为父类或者超类、也可以称作基类,继承的类称为子类。并且Pytho
Python中的函数(一) 接触过C语言的朋友对函数这个词肯定非常熟悉,无论在哪门编程语言当中,函数(当然在某些语言里称作方法,意义是相同的)都扮演着至关重要的角色。今天就来了解一下Python中的函数用法。一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明
在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方便和顺手,就是web.py。它由一名黑客所创建,但是不幸的是这位创建者于2013年自杀了。据说现在由
将Sublime Text 2搭建成一个好用的IDE 说起编辑器,可能大部分人要推荐的是Vim和Emacs,本人用过Vim,功能确实强大,但是不是很习惯,之前一直有朋友推荐SUblime Text 2这款编辑器,然后这段时间就试了一下,就深深地喜欢上这款编辑器了...
Python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则是无法正常进行调用的。那么在Python中,如果要引用一些内置的函数,该怎么处理呢?在Python中
Python的基础语法 在对Python有了基础的认识之后,下面来了解一下Python的基础语法,看看它和C语言、java之间的基础语法差异。一.变量、表达式和语句 Python中的语句也称作命令,比如print "hello python"这就是一条语句。 表达式,顾名思义,是
Eclipse+PyDevʽjango+Mysql搭建Python web开发环境 Python的web框架有很多,目前主流的有Django、Tornado、Web.py等,最流行的要属Django了,也是被大家最看好的框架之一。下面就来讲讲如何搭建Django的开发环境。一.准备工作 需要下载的
在windows下安装配置Ulipad 今天推荐一款轻便的文本编辑器Ulipad,用来写一些小的Python脚本非常方便。 Ulipad下载地址: https://github.com/limodou/ulipad http://files.cnblogs.com/dolphin0520/u...
Python中的函数(三) 在前面两篇文章中已经探讨了函数的一些相关用法,下面一起来了解一下函数参数类型的问题。在C语言中,调用函数时必须依照函数定义时的参数个数以及类型来传递参数,否则将会发生错误,这个是严格进行规定的。然而在Python中函数参数定义和传递的方式相比而言就灵活多了。一.函数参数的
在Notepad++中搭配Python开发环境 Python在最近几年一度成为最流行的语言之一,不仅仅是因为它简洁明了,更在于它的功能之强大。它不仅能够完成一般脚本语言所能做的事情,还能很方便快捷地进行大规模的项目开发。在学习Python之前我们来看一下Python的历史由来,"Pytho
Python中的条件选择和循环语句 同C语言、Java一样,Python中也存在条件选择和循环语句,其风格和C语言、java的很类似,但是在写法和用法上还是有一些区别。今天就让我们一起来了解一下。一.条件选择语句 Python中条件选择语句的关键字为:if 、elif 、else这三个。其基本形式如
关于raw_input( )和sys.stdin.readline( )的区别 之前一直认为用raw_input( )和sys.stdin.readline( )来获取输入的效果完全相同,但是最近在写程序时有类似这样一段代码:import sysline = sys.stdin.readline()
初识Python 跟学习所有的编程语言一样,首先得了解这门语言的编程风格和最基础的语法。下面就让我们一起来了解一下Python的编程风格。1.逻辑行与物理行 在Python中有逻辑行和物理行这个概念,物理行是指在编辑器中实际看到的一行,逻辑行是指一条Python语句。在Python中提倡一个物理行只
当我们的代码是有访问网络相关的操作时,比如http请求或者访问远程数据库,经常可能会发生一些错误,有些错误可能重新去发送请求就会成功,本文分析常见可能需要重试的场景,并最后给出python代码实现。
1.经典迭代器 2.将Sentence中的__iter__改成生成器函数 改成生成器后用法不变,但更加简洁。 3.惰性实现 当列表比较大,占内存较大时,我们可以采用惰性实现,每次只读取一个元素到内存。 或者使用更简洁的生成器表达式 4.yield from itertools模块含有大量生成器函数可
本文介绍简单介绍socket的常用函数,并以python-kafka中的源码socketpair为例,来讲解python socket的运用
python实践中经常出现编码相关的异常,大多网上找资料而没有理解原理,导致一次次重复错误。本文对常用Unicode、UTF-8、GB2312编码的原理进行介绍,接着介绍了python字符类型unicode和str以及常见编解码错误UnicodeEncodeError和UnicodeDEcodeEr