绘制折线图

参数详情

from matplotlib import pyplot as plt

# 设置图片大小,dpi图片放大缩小时可以让其更清晰
plt.figure(figsize=(20,8),dpi=80) x = range(2,26,2)
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]
# 绘图
plt.plot(x,y) # 保存图片
# plt.savefig('./1.jpg') # 也可以保存为矢量图格式.svg 放大不会有锯齿 # 设置x轴的刻度 就是将坐标变成我们想要展示的样子
# plt.xticks(x) # 可读的密集和稀疏可以通过调整x的步长
# plt.xticks(range(2,25)) # 可读的密集和稀疏可以通过调整x的步长
plt.xticks([i/2 for i in range(4,49,2)]) # 设置y轴刻度
plt.yticks(range(min(y),max(y)+1)) # 展示图形
plt.show()

显示中文的两种方式

方式一:
加上下面这两句话
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False 方式二:
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='字体路径')
plt.xticks([i/2 for i in range(4,49,2)],fontproperties=my_font) # 哪里需要修改中文 就需要添加fontproperties

练习1

如果列表a表示10点到12点的每一分钟气温,如何绘制折线图观察每一分钟气温的变化情况

a = [random.randint(20,35) for i in range(120)]

import random
import matplotlib
from matplotlib import pyplot as plt # 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False x = range(0,120)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(20,8),dpi=80) plt.plot(x,y)
# 设置显示方式 设置x轴上字符串的刻度 10点0分 --- 11点59分
_xtick_labels = ['10点{}分'.format(i) for i in range(60)]
_xtick_labels += ['11点{}分'.format(i) for i in range(60)]
# print(_x_tickes) plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45) # 将x轴显示的刻度旋转45度 # 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度 单位(℃)")
plt.title("10点到12点每分钟的气温变化情况")
plt.show() # matplolib默认不显示中文

练习2

from matplotlib import pyplot as plt

a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
x = range(11,31)
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,a) plt.xticks(x,["{}岁".format(i) for i in x]) plt.xlabel("年龄")
plt.ylabel("个数")
plt.title("每年交男/女朋友的个数") # 绘制网格
plt.grid(alpha=0.5) # alpha设置网格透明度 plt.show()

练习3

from matplotlib import pyplot as plt

y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
x = range(11,31)
plt.figure(figsize=(20,8),dpi=80) # 分别绘制我和同桌的交友信息
plt.plot(x,y_1,label="自己",color="cyan",linestyle=":") # 定制折线风格
plt.plot(x,y_2,label="同桌",color="m",linestyle="-.") plt.xticks(x,["{}岁".format(i) for i in x]) plt.xlabel("年龄")
plt.ylabel("个数")
plt.title("每年交男/女朋友的个数") # 绘制网格
plt.grid(alpha=0.5) # alpha设置网格透明度 # 添加图列 两步:1、在绘图的时候添加label参数;2、调用legend方法
# plt.legend(prop=my_font) # 显示中文,只有在legend中显示中文添加的参数是prop,其他都是fontproperties
plt.legend(loc=2) # loc可以调节图例位置
plt.show()

自定义折线颜色

绘制散点图

练习

绘制3月份和10月份的天气变化情况

import random
from matplotlib import pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False # 该数据是模拟3月和10月的天气 random随机生成的
y_3 = [random.choice(range(1,20)) for i in range(1,32)]
y_3.sort() # 3月份天气
y_10 = [random.choice(range(1,20)) for i in range(1,32)]
y_10.sort(reverse=True) # 10月份天气
print(y_3,y_10) # x轴坐标
x_3 = range(1,32)
x_10 = range(51,82) # 如果用同一个x轴画两次,图像会重叠在一起,所以将另一个整体向右偏移
# 调整图形大小
plt.figure(figsize=(20,8),dpi=80) # 绘制散点图 并添加图列显示信息
plt.scatter(x_3,y_3,label="3月份",color="orange")
plt.scatter(x_10,y_10,label="10月份",color="m") # 调整x轴的刻度
_x = list(x_3)+list(x_10) # x轴所有的点
_x_label = ["3月{}号".format(i) for i in x_3]
_x_label += ["10月{}号".format(i-50) for i in x_10] # 因为x_10是从51开始的所以i需要减去50才能代表11月的每一日
plt.xticks(_x[::3],_x_label[::3],rotation=45) # 添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("3/10月每天的气温变化情况")
# 添加图例
plt.legend(loc=1) # loc控制图例显示位置 # 显示
plt.show()

绘制条形图

练习

from matplotlib import pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False # 条形图主要用来统计离散的数据
a = ["战狼2","哪吒之魔童降世","流浪地球","复仇者联盟4:终局之战","红海行动","美人鱼","唐人街探案2","我不是药神","速度与激情8","西虹市首富"]
b = [56.39,47.87,46.18,42.05,36.22,33.9,33.71,30.75,26.49,25.27] # 单位(亿) # 更改大小
plt.figure(figsize=(20,8),dpi=80)
# 绘制条形图,并设置条形图的宽度
plt.bar(range(len(a)),b,width=0.2,label="电影票房")
# 设置x轴
plt.xticks(range(len(a)),a,rotation=45)
# 绘制网格并这是透明度
plt.grid(alpha=0.5)
# 添加标签
plt.xlabel("电影名")
plt.ylabel("票房 (亿)")
plt.title("电影票房")
# 添加图例
plt.legend(loc=1) plt.show()

绘制横着的条形图

练习

from matplotlib import pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False # 条形图主要用来统计离散的数据
a = ["战狼2","哪吒之魔童降世","流浪地球","复仇者联盟4:终局之战","红海行动","美人鱼","唐人街探案2","我不是药神","速度与激情8","西虹市首富"]
b = [56.39,47.87,46.18,42.05,36.22,33.9,33.71,30.75,26.49,25.27] # 单位(亿) # 更改大小
plt.figure(figsize=(20,8),dpi=80)
# 绘制条形图,并设置条形图的宽度
plt.barh(range(len(a)),b,height=0.3,color="orange")
# 设置y轴
plt.yticks(range(len(a)),a)
# 绘制网格并这是透明度
plt.grid(alpha=0.5)
plt.show()

绘制多次条形图

练习

对比同一个电影在14/15/16这三天的票房情况

from matplotlib import pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False a = ["猩球崛起3:终极之战","敦刻尔克","蜘蛛侠:英雄归来","战狼2"]
b_16 = [15746,313,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362] # 分别绘制14/15/16日的图像 这种同用一组x轴的数据需要进行偏移,不然绘制出来的图像会重叠在一起
bar_width = 0.2 # 整体向右便宜0.2 范围相加不能大于1
x_14 = list(range(len(a)))
x_15 = [i+bar_width for i in x_14]
x_16 = [i+bar_width*2 for i in x_14] # 设置图形大小
plt.figure(figsize=(20,8),dpi=80) # 绘制图像
plt.bar(x_14,b_14,width=bar_width,label="14日票房数据")
plt.bar(x_15,b_15,width=bar_width,label="15日票房数据")
plt.bar(x_16,b_16,width=bar_width,label="16日票房数据") # 设置x轴
plt.xticks(x_15,a) # 为了让电影名在中间显示所以选择x_15 # 添加图列
plt.legend(loc=1) # 添加描述信息
plt.xlabel("电影名")
plt.ylabel("电影票房 (亿)")
plt.title("同一个电影近3天的票房数据") plt.show()

绘制直方图

只有是没有进行统计过的数据才可以绘制直方图

a=[131, 98, 125, 131, 124, 139, 131, 117, 128,108, 135, 131, 102, 107, 114, 119, 128, 121, 142, 127, 124, 101, 110, 116, 117, 110, 128, 128, 115, 99, 136, 126, 134, 95, 138, 117, 111,110, 132, 124, 113, 150, 110, 117, 86, 95, 144, 105, 126,130,126, 130, 126, 116, 123, 106, 112, 138, 123, 86, 101, 99, 136,123, 117, 119, 105, 137, 123, 128, 125, 104, 109, 134,125, 127,105, 120, 107, 129, 116, 108, 132, 103, 136, 118, 102, 120, 114,105, 115, 132, 145, 119, 121, 112, 139, 125, 138, 109,132, 134,156, 106, 117, 127, 144, 139, 139, 119, 140, 83, 110, 102,123,107, 143, 115, 136, 118, 139, 123, 112, 118, 125, 109,119, 133,112, 114, 122, 109, 106, 123, 116, 131, 127, 115, 118, 112, 135,115, 146, 137, 116, 103,144, 83,113,121,111,123,100, 154,136, 100, 118, 119, 133, 134, 106, 129, 126, 110, 111, 109, 141,120, 117, 106, 149, 122, 122, 110, 118, 127, 121, 114,125, 126,114, 140, 103, 130, 141, 117, 106, 114, 121, 114, 133, 137, 92,121, 112, 146, 97, 137, 105, 98, 117, 112, 111, 97,139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112, 124, 94, 146,133, 101,131, 116, 111, 84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 123, 150]

import matplotlib.pyplot as plt

# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号 # 设置图像大小
plt.figure(figsize=(20,8),dpi=80)
# 计算组数
bin_width = 3 # 设置组距为3
num_bins = (max(a)-min(a))+5//bin_width # 组数 表示将数据分为多少组
print(num_bins)
# 绘制直方图
plt.hist(a,num_bins)
plt.grid()
# 设置x轴刻度
plt.xticks(range(min(a),max(a)+bin_width,bin_width)) # 最小值---最大值 步长为组距
plt.show()

上图是频数直方图,我们可以通过normed参数来将其调整为频率直方图

import matplotlib.pyplot as plt
import numpy as np
import matplotlib # 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False # 正常显示负号
# 随机生成(10000,)服从正态分布的数据
data = np.random.randn(10000)
print(data)
"""
绘制直方图
data:必选参数,绘图数据
bins:直方图的长条形数目,可选项,默认为10
normed:是否将得到的直方图向量归一化,可选项,默认为0,代表不归一化,显示频数。normed=1,表示归一化,显示频率。
facecolor:长条形的颜色
edgecolor:长条形边框的颜色
alpha:透明度
"""
plt.hist(data, bins=40, normed=1, facecolor="orange", edgecolor="black", alpha=0.7)
# 显示横轴标签
plt.xlabel("区间")
# 显示纵轴标签
plt.ylabel("频率")
# 显示图标题
plt.title("频率分布直方图")
plt.show()

数据分析之matplotlib使用的更多相关文章

  1. 数据分析07 /matplotlib绘图

    数据分析07 /matplotlib绘图 目录 数据分析07 /matplotlib绘图 1. 绘制线性图:plt.plot() 2. 绘制柱状图:plt.bar() 3. 绘制直方图:plt.his ...

  2. python数据分析工具 | matplotlib

    不论是数据挖掘还是数学建模,都免不了数据可视化的问题.对于 Python 来说,matplotlib 是最著名的绘图库,它主要用于二维绘图,当然也可以进行简单的三维绘图.它不但提供了一整套和 Matl ...

  3. python数据分析入门——matplotlib的中文显示问题&最小二乘法

    正在学习<用python做科学计算>,在练习最小二乘法时遇到matplotlib无法显示中文的问题.查资料,感觉动态的加上几条语句是最好,这里贴上全部的代码. # -*- coding: ...

  4. 数据分析之matplotlib.pyplot模块

    首先都得导模块. import numpy as np import pandas as pd import matplotlib.pyplot as plt from pandas import S ...

  5. 数据分析之Matplotlib和机器学习基础

    一.Matplotlib基础知识 Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 通过 Matplotlib,开发者可以仅需 ...

  6. 数据分析之Matplotlib

    一.Matplotlib的基础知识     Matplotlib中的基本图表包括的元素     •x轴和y轴 axis     水平和垂直的轴线     •x轴和y轴刻度 tick     刻度标示坐 ...

  7. python数据分析之matplotlib学习

    本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 类MATLAB API 最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数. from p ...

  8. python数据分析使用matplotlib绘图

    matplotlib绘图 关注公众号"轻松学编程"了解更多. Series和DataFrame都有一个用于生成各类图表的plot方法.默认情况下,它们所生成的是线形图 %matpl ...

  9. matplotlib简介

    python的matplotlib包可以帮助我们绘制丰富的图表,有助于我们的数据分析. matplotlib官方文档:matplotlib 本博客所有代码默认导入matplotlib.pyplot和n ...

随机推荐

  1. ubuntu14.04 caffe

    1.显卡驱动 ubuntu nvidia 940m 使用sudo ubuntu-drivers devices 查看推荐的驱动版本 //sudo add-apt-repository ppa:mama ...

  2. ppt调整三级标题的位置

    ---恢复内容开始--- 标题格式:一级标题   中文数字加.例如 一. 二级标题  中文数字加:   例如二: 三级标题  小写数字加.  例如3. 使用方法: 打开PPT  按alt+f11,打开 ...

  3. “df: cannot read table of mounted file systems”.

    “df: cannot read table of mounted file systems”.“df -l” returned an error: “df: cannot read table of ...

  4. Keras 笔记

    1. 从 meta 模型恢复graph,   修改node  并保存 from __future__ import absolute_import from __future__ import div ...

  5. js中this关键字用法详解

    1.全局环境中的this 在全局环境中,this 指向全局对象Global,即 window 对象 如: alert(this); // 显示 [object Window] alert(this = ...

  6. dubbo常见异常及解决方式

    1.出现RpcException: Failed to invoke the method post in the service com.xxx.xxx.xxx异常怎么办?表示调用失败1.检查网络是 ...

  7. sql基础的基础

    一.数据定义语言(DDL) create table alter table drop table create index alter index drop index create view dr ...

  8. 【Zookeeper】应用场景概述

    一.数据发布与订阅(配置中心) 二.负载均衡 三.命名服务(Naming Service) 四.分布式通知/协调 五.集群管理与Master选举 六.分布式锁 七.分布式事务 一.数据发布与订阅(配置 ...

  9. json _ ajax_跨域

    1 json 1 js 对象 语法: 1 通过一对{}表示一个对象 2 在{}中允许通过 key:value 的形式来表示属性 3 多对的属性和值之间使用 , 隔开 2 什么中JSON 按照JS对象的 ...

  10. Java学习第三天之注释

    编写程序时,总需要为程序添加一些注释,用以说明某段代码的作用,或者说明某个类的用途.某个方法的功能,以及该方法的参数和返回值的数据类型及意义等. 一.为什么要添加注释? (1)便于自己理解:有些人可能 ...