python 二维强度图_荐 python数据分析matplotlib库使用之二维图形绘制

本篇内容会在后期不定时更新

什么是matplotlib

matplotlib是最流行的python底层绘图库,主要做数据可视化图表。

为什么要学习matplotlib

能将数据进行可视化,更直观的呈现

使数据更加客观,更具有说服力

二维图绘制

matplotlib库的基本使用之折线图

导入matplotlib库

from

matplotlib

import

pyplot

as

plt

x

=

range

(

1

,

10

,

2

)

y

=

[

2

,

4

,

6

,

8

,

10

]

plt

.

plot

(

x

,

y

)

# 传入x y ,通过plot绘制折线图

plt

.

show

(

)

# 展示图形

展示结果:

b5d0dce656444b3de7e007b4fac2a834.png

matplotlib还可以设置输出图片的一些格式,如下:

设置图片的大小,像素

保存到本地

描述信息,比如x y轴所要表达的内容

调整x y轴的间距

线条的样式

标记出特殊的点

给图片添加水印

设置图片的大小

fig

=

plt

.

figure

(

figsize

=

(

20

,

8

)

,

dpi

=

80

)

输出的样式就会发生改变:

e7816b01563be8a01f4cefce201fe22d.png

保存图片

plt

.

savefig

(

"example.png"

)

一保存到本地

341be35103c3b242e53cb0e5fa39b54a.png

调整x y轴的刻度

x

=

range

(

1

,

20

,

2

)

y

=

[

2

,

4

,

6

,

8

,

10

,

12

,

14

,

16

,

18

,

20

]

plt

.

xticks

(

x

)

# 修改x轴的刻度

plt

.

yticks

(

y

)

# 修改y轴的刻度

修改后的图像:

4517da65b671efc0698671d3427b3dba.png

修改步长

当x轴的刻度太密集时,可采用修改步长的方法达到疏一点的刻度,当然y轴同样。

plt

.

xticks

(

x

[

:

:

2

]

)

结果如下:

325e979e9968a518d871fe620a6df1d2.png

设置显示中文

from

pylab

import

mpl

# 设置显示中文

mpl

.

rcParams

[

'font.sans-serif'

]

=

[

'FangSong'

]

设置x y轴及标题的标签

plt

.

xlabel

(

"奇数"

)

# 设置x轴的标签

plt

.

ylabel

(

"偶数"

)

# 设置y轴的标签

plt

.

title

(

"示例"

)

# 设置标题的标签

输出结果如下:

b456bf053049d5aff4cdbfcc6c72666f.png

绘制网格

绘制网格可以更加明确的看出数据之间的关系,当然网格也可以调节透明度来更加易于观查数据,

透明度的数值为0-1之间,0表示完全透明,1表示完全不透明。

plt

.

grid

(

)

# 采用默认的透明度

plt

.

grid

(

alpha

=

0.5

)

# 透明度为0.5时的网格

输出结果:

292f4de8ea775ee2b4e5066c57d97898.png

28b0bbce105ef852586893ec56fb41ca.png

设置图标

ax

.

plot

(

z_1

,

label

=

"curb"

)

#立方数据线

ax

.

plot

(

Y_1

,

label

=

"quer"

,

linewidth

=

5

)

#平方数据线

ax

.

plot

(

x

,

x

,

label

=

"liner"

,

linewidth

=

5

)

#直线

ax

.

legend

(

loc

=

'best'

)

#添加图标

效果:

763f6e86fbc5992247a3c70c2f00bafa.png

散点图的绘制

散点图的绘制方法

散点图绘制采用scatter()函数,只需传入x和y的值即可,代码如下:

import

matplotlib

.

pyplot

as

plt

# 导入库

fig

,

ax

=

plt

.

subplots

(

)

# 调用subplots

ax

.

scatter

(

X

,

Y

)

# 传入x和有

fig

.

show

(

)

# 展示数据

还是上面的例子做展示,改为散点图。代码如下:

版本一:

import

matplotlib

.

pyplot

as

plt

fig

,

ax

=

plt

.

subplots

(

)

x

=

[

i

for

i

in

range

(

10

)

]

# 设置x轴数据

Y_1

=

[

i

**

2

for

i

in

range

(

10

)

]

# 设置y轴平方数据

z_1

=

[

i

**

3

for

i

in

range

(

10

)

]

# 设置y轴立方数据

ax

.

scatter

(

x

,

z_1

,

label

=

"curb"

)

# 立方数据线

ax

.

scatter

(

x

,

Y_1

,

label

=

"quer"

,

linewidth

=

5

)

# 平方数据线

ax

.

scatter

(

x

,

x

,

label

=

"liner"

,

linewidth

=

5

)

# 直线

ax

.

legend

(

loc

=

'best'

)

#设置图标

plt

.

savefig

(

"data.png"

)

# 保存图片

fig

.

show

(

)

# 展示图片

版本二:

import

matplotlib

.

pyplot

as

plt

x

=

[

i

for

i

in

range

(

10

)

]

# 设置x轴数据

Y_1

=

[

i

**

2

for

i

in

range

(

10

)

]

# 设置y轴平方数据

z_1

=

[

i

**

3

for

i

in

range

(

10

)

]

# 设置y轴立方数据

plt

.

scatter

(

x

,

z_1

,

label

=

"curb"

)

# 立方数据线

plt

.

scatter

(

x

,

Y_1

,

label

=

"quer"

,

linewidth

=

5

)

# 平方数据线

plt

.

scatter

(

x

,

x

,

label

=

"liner"

,

linewidth

=

5

)

# 直线

plt

.

legend

(

loc

=

'best'

)

#设置图标

plt

.

savefig

(

"散点图.png"

)

# 保存图片

plt

.

show

(

)

# 展示图片

效果:

ef3bc7edaf6342a8b867382b52dffedb.png

柱图绘制

柱状图的绘制方法为bar和barh方法,bar绘制垂直柱状图,barh绘制水平柱状图。

bar柱状图绘制:

from

matplotlib

import

pyplot

as

plt

from

pylab

import

mpl

figure

=

plt

.

figure

(

figsize

=

(

20

,

15

)

)

# 设置图像大小

# 设置字体

mpl

.

rcParams

[

'font.sans-serif'

]

=

[

'FangSong'

]

# 电影名称

title

=

[

'误杀'

,

'流浪地球'

,

'寻梦环游记'

,

'战狼2'

,

'美人鱼'

,

'湄公河行动'

,

'叶问4'

,

'何以为家'

,

'比悲伤更悲\n伤的故事'

,

'中国合伙人'

]

# 电影票房

data

=

[

11.97

,

46.18

,

12.02

,

56.39

,

33.9

,

11.73

,

11.72

,

3.7

,

9.46

,

5.39

]

# 绘制柱状图,传入x和y

plt

.

bar

(

title

,

data

)

# 设置x轴刻度字体的大小

plt

.

xticks

(

fontsize

=

30

)

# 设置y轴刻度字体的大小

plt

.

yticks

(

fontsize

=

30

)

# 设置x轴的标签名称

plt

.

xlabel

(

"票房/亿"

,

fontsize

=

30

)

# 设置y轴的标签名称

plt

.

ylabel

(

"电影"

,

fontsize

=

30

)

# 绘制网格

plt

.

grid

(

alpha

=

0.5

)

# 保存图片

plt

.

savefig

(

"柱状图.png"

)

# 展示图片

figure

.

show

(

)

效果:

b35ca0825c21a16bd91dc69d0a787104.png

barh水平柱状图的绘制。

barh方法:

from

matplotlib

import

pyplot

as

plt

from

pylab

import

mpl

figure

=

plt

.

figure

(

figsize

=

(

20

,

15

)

)

# 设置图像大小

# 设置字体

mpl

.

rcParams

[

'font.sans-serif'

]

=

[

'FangSong'

]

# 电影名称

title

=

[

'误杀'

,

'流浪地球'

,

'寻梦环游记'

,

'战狼2'

,

'美人鱼'

,

'湄公河行动'

,

'叶问4'

,

'何以为家'

,

'比悲伤更悲\n伤的故事'

,

'中国合伙人'

]

# 电影票房

data

=

[

11.97

,

46.18

,

12.02

,

56.39

,

33.9

,

11.73

,

11.72

,

3.7

,

9.46

,

5.39

]

# 绘制柱状图,传入x和y

plt

.

bar

(

title

,

data

)

# 设置x轴刻度字体的大小

plt

.

xticks

(

fontsize

=

30

)

# 设置y轴刻度字体的大小

plt

.

yticks

(

fontsize

=

30

)

# 设置x轴的标签名称

plt

.

xlabel

(

"票房/亿"

,

fontsize

=

30

)

# 设置y轴的标签名称

plt

.

ylabel

(

"电影"

,

fontsize

=

30

)

# 绘制网格

plt

.

grid

(

alpha

=

0.5

)

# 保存图片

plt

.

savefig

(

"柱状图.png"

)

# 展示图片

figure

.

show

(

)

效果:

20a4f42dc7f8870ea28765f31aea1c53.png

间隔柱状图绘制

有时需要将多组数据绘制到同一个图表上,这时就需要间隔各个图表的内容,详情见代码。

from

matplotlib

import

pyplot

as

plt

import

numpy

as

np

from

pylab

import

mpl

mpl

.

rcParams

[

'font.sans-serif'

]

=

[

'FangSong'

]

movie_name

=

[

"千与千寻"

,

"玩具总动员"

,

"黑衣人"

]

# 三天内票房

num1

=

[

7548

,

4013

,

1673

]

num2

=

[

5453

,

1840

,

1080

]

num3

=

[

4383

,

2345

,

1890

]

x

=

np

.

arange

(

len

(

movie_name

)

)

# 设置柱宽

width

=

0.2

# 绘制柱状图,alpha设置透明度,width设置柱宽,label设置图标

plt

.

bar

(

x

,

num1

,

alpha

=

0.5

,

width

=

width

,

label

=

movie_name

[

0

]

)

# num2图加上一个柱宽

plt

.

bar

(

[

i

+

width

for

i

in

x

]

,

num2

,

alpha

=

0.5

,

width

=

width

,

label

=

movie_name

[

1

]

)

# num3图加上两个柱宽

plt

.

bar

(

[

i

+

2

*

width

for

i

in

x

]

,

num3

,

alpha

=

0.5

,

width

=

width

,

label

=

movie_name

[

2

]

)

# 设置x轴的值

x_label

=

[

"第{}天"

.

format

(

i

+

1

)

for

i

in

x

]

# 偏移x轴的值

plt

.

xticks

(

[

i

+

width

for

i

in

x

]

,

x_label

)

# 设置x,y轴的标签,fontsize设置字体的大小

plt

.

ylabel

(

"票房"

,

fontsize

=

15

)

plt

.

xlabel

(

"天数"

,

fontsize

=

15

)

# 设置图标,loc设置图标位置

plt

.

legend

(

loc

=

"best"

)

# 保存图片

plt

.

savefig

(

"间隔柱状图.png"

)

# 展示图表

plt

.

show

(

)

效果:

85e1a6814d29f890bee4d705aedd624e.png

饼状图绘制

饼状图的绘制含函数为pie(),传入相应比例即可,具体参数见代码。

代码如下:

from

matplotlib

import

pyplot

as

plt

from

pylab

import

mpl

# 设置显示中文

mpl

.

rcParams

[

'font.sans-serif'

]

=

[

'FangSong'

]

# 男生人数

man

=

72351

# 女生人数

woman

=

81345

# 人妖人数

mid_person

=

2300

# 计算男生比例

man_perc

=

man

/

(

man

+

woman

+

mid_person

)

# 计算女生比例

woman_perc

=

woman

/

(

man

+

woman

+

mid_person

)

# 计算人妖比例

mid_perc

=

mid_person

/

(

man

+

woman

+

mid_person

)

# 添加名称

labels

=

[

'男'

,

'女'

,

"人妖"

]

# 修改颜色

colors

=

[

'blue'

,

'orange'

,

'red'

]

# 绘制饼状图,传入的为列表。explode为饼状图添加分裂效果,传入参数为元组,第一个参数为可为0,第二个参数分割距离。autopct为饼状图添加显示比例。

paches

,

texts

,

autotexts

=

plt

.

pie

(

[

man_perc

,

woman_perc

,

mid_perc

]

,

colors

=

colors

,

labels

=

labels

,

explode

=

(

0

,

0

,

0.02

)

,

autopct

=

'%0.1f%%'

)

# 修改字体颜色

for

text

in

texts

+

autotexts

:

text

.

set_color

(

"black"

)

# 设置字体大小

for

text

in

texts

+

autotexts

:

text

.

set_fontsize

(

15

)

plt

.

savefig

(

"饼状图.png"

)

# 展示图像

plt

.

show

(

)

效果:

974e02efac8f9d397c739f043e4a1358.png

直方图绘制

随机正太分布直方图

直方图的绘制的函数为hist(),传入相应的正太值即可。详细见代码。

代码如下:

from

matplotlib

import

pyplot

as

plt

import

numpy

as

np

# 生成1000个标志的正太分布随机

x

=

np

.

random

.

randn

(

1000

)

# 修改柱的宽度,使用bins,值越小,图像越宽。

plt

.

hist

(

x

,

bins

=

100

)

plt

.

savefig

(

"随机正太分布直方图.png"

)

plt

.

show

(

)

效果:

a48d9ac70ffe90effc01c2f289246e65.png

指定期望与均值的直方图

调用numpy库中的np.random.normal()即可指定期望与均值,详情见代码。

代码如下:

from

matplotlib

import

pyplot

as

plt

import

numpy

as

np

# 使用np.random.normal()指定期望与均值的正太分布,0为期望,0.8为均值,1000为生成的个数。

# 绘制三个指定期望与均值的正太分布

x

=

np

.

random

.

normal

(

0

,

0.8

,

1000

)

y

=

np

.

random

.

normal

(

0

,

0.5

,

1000

)

z

=

np

.

random

.

normal

(

0

,

0.7

,

1000

)

# 传入关键字参数,为字典形式。**kwargs为包裹关键字参数

kwargs

=

dict

(

bins

=

100

,

alpha

=

0.5

)

# 绘制直方图

plt

.

hist

(

x

,

**

kwargs

)

plt

.

hist

(

y

,

**

kwargs

)

plt

.

hist

(

z

,

**

kwargs

)

# 保存图片

plt

.

savefig

(

"指定期望与均值直方图.png"

)

# 展示图片

plt

.

show

(

)

效果:

ee0517e77e099785402b6aa85134134e.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql产品优化方案_mysql的优化方案

简介在本文中,主要写一下自己所查阅和理解的mysql优化方案.我的理解是数据库的优化对于我们非专业人员,mysql的优化也没那么复杂了,真的要玩转mysql的话,肯定得需要很多年的经验了.参考链接:优化方案1.搜索引擎的优化mysql搜索引擎用的比较多的有以下三中InnoDBMEMORYMyISAMInn…

python数据爬虫代码_python如何示例爬虫代码

python爬虫代码示例的方法:首先获取浏览器信息,并使用urlencode生成post数据;然后安装pymysql,并存储数据到MySQL即可。python爬虫代码示例的方法:1、urllib和BeautifuSoup获取浏览器信息from urllib import requestre…

kali linux查看网卡_CentOS7.6安装无线网卡驱动|Linux如何安装网卡驱动|Linux如何让配置网卡...

此前提到,Thinkpad E490安装CentOS7.6遇到内核崩溃的问题,解决之后,安装CentOS7.6操作系统成功。安装时发现,系统能够检测到有线网卡,但无法检测到无线网卡,说明CentOS7.6对此无线网卡的支持不足&#xff0…

python本地编译器_Python学习札记(0)——Python开发环境搭载及推荐几款Python编译器...

1、进入网址:http://www.python.org/download/#id102、选择版本:其中有两个Python版本,一个为3.0以上版本,一个为2.7版本,主要区别有一些特定的软件只支持2.7版本其中的两个windows版本为:Python 3.3.3 Win…

如何将mysql的数据库渲染到页面_vue.js实现数据库的JSON数据输出渲染到html页面功能示例...

本文实例讲述了vue.js实现数据库的JSON数据输出渲染到html页面功能。分享给大家供大家参考,具体如下:1、首先通过json.php把数据库给输出为json格式的数据[{"id":1,"resname":"百度","resimg":"http://www…

java模块_Java 9 揭秘(2. 模块化系统)

文 by / 林本托Tips做一个终身学习的人。在此章节中,主要介绍以下内容:在JDK 9之前Java源代码用于编写,打包和部署的方式以及该方法的潜在问题JDK 9中有哪些模块如何声明模块及其依赖关系如何封装模块什么是模块路径什么是可观察的模块如何打…

java swing滚动面板_java swing 之 JScrollPane(滚动面板)的使用

/*** java swing 之JScrollPane面板* 在设置界面时,可能会遇到在一个较小的容器窗体中显示一个较大部分的内容,这时可以使用* JScrollPane面板,JscrollPane面板是带滚动条的面板,也是一种容器,但是常用于布置单个* 控件…

java reader_Java之字符输入流,Reader类的简单介绍

各位小伙伴们大家好,在之前的文章中,小编介绍了Java之文件复制的简单介绍,多是一些关于字节的知识,这次小编要介绍的是字符输入流Reader类,具体如下:java.io.Reader:字符输入流,是字符输入流的最…

java object 转byte_Java将对象Object转换成Byte字节数组

Java将对象Object转换成Byte字节数组的代码如下:/*** from www.ityuan.com* Description: Java将对象Object转换成Byte字节数组*/public class ObjectToByteTester implements Serializable {private static final long serialVersionUID 932872837809539736L;publ…

java redis brpop_Redis实战 | 5种Redis数据类型详解

我们知道Redis是目前非常主流的KV数据库,它因高性能的读写能力而著称,其实还有另外一个优势,就是Redis提供了更加丰富的数据类型,这使得Redis有着更加广泛的使用场景。那Redis提供给用户的有哪些数据类型呢?主要有&…

java二分查找递归_java学习之—递归实现二分查找法

/*** 递归实现二分查找法* Create by Administrator* 2018/6/21 0021* 上午 11:25**/class OrdArray{private long[] a;private int nElems;public OrdArray(int max){this.a new long[max];this.nElems 0;}public int size(){return nElems;}public long find(long searchKe…

java 抽象类对象_Java基础___面向对象__抽象类

抽象类在面向对象的概念中,所以的对象都是通过类来描绘的,但是反过来,并不是多余类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外&#…

java 对象克隆_JAVA对象克隆

1> 为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。2> 在派生类中覆盖基类的clone(),并声明为public。3> 在派生类的clone()方法中,调用super.clone()。4> 在派生类中实现Cloneable接口。4> 没有抽象方法的接口叫…

产生随机数java_java产生随机数的几种方式

一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他就是个100以内的随机,这个在j2me中没有。二.在java.util这个包里面提供…

java 线程 单例_多线程单例模式

多线程单例模式原文:https://blog.csdn.net/u011726005/article/details/823565381. 饿汉模式使用饿汉模式实现单例是十分简单的,并且有效避免了线程安全问题,因为将该单例对象定义为static变量,程序启动即将其构造完成了。代码实…

java 中文 编译_java编译带中文是显示乱码的错误

FirstJava.java:3: 错误: 编码GBK的不可映射字符System.out.println("娆㈣繋瀛︿範Java绋嬪簭锛?")锛?^FirstJava.java:3: 错误: 编码GBK的不可映射字符System.out.println("娆㈣繋瀛︿範Java绋嬪簭锛?")锛?^FirstJava.java:4: 错误: 编码GBK的不可映射…

java 中间件 pdf_Java中间件技术及其应用开发 PDF扫描版[51MB]

Java中间件技术及其应用开发 内容提要:本书使用丰富的案例介绍了使用Java技术进行中间件编程的方法及技巧,包括JSP、JavaServlet、JDBC数据库开发、使用JavaMail开发邮件应用程序、RMI(远程方法调用)、EnterpriseJavaBeans开发、使用CORBA以及JavaIDL进行…

java千万用户实现实时排名_想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜...

本文由云社区发表前言业务已基于Redis实现了一个高可用的排行榜服务,长期以来相安无事。有一天,产品说:我要一个按周排名的排行榜,以反映本周内用户的活跃情况。于是周榜(按周重置更新的榜单)诞生了。为了满足产品多变的需求&…

java循环左一_左旋转字符串(Java)-循环Index方式

左旋转字符串(Java)-循环Index方式题目要求​ 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S”…

java jna jni_JNA, Java Native开发利器

下面的文章由转载而来,java与c的调用基本思路是这样子,但是结合我的使用经验,在使用jna和jnative的时候需要考虑到jdk的版本,jnative跟jdk1.4的结合可能会有点问题,因为我之前选的是jnative,而我们的jdk版本…