matplolib学习 数据分析之matplotlib使用 绘制折线图 绘制散点图 绘制条形图 绘制直方图

 

绘制折线图

参数详情

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

显示中文的两种方式

1
2
3
4
5
6
7
8
9
10
方式一:
加上下面这两句话
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 in range(4,49,2)],fontproperties=my_font)  # 哪里需要修改中文 就需要添加fontproperties

练习1

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

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

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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默认不显示中文
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

练习2

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

练习3

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

自定义折线颜色

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制散点图

练习

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

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制条形图

练习

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制横着的条形图

练习

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制多次条形图

练习

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

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

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

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

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

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

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制折线图

参数详情

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

显示中文的两种方式

1
2
3
4
5
6
7
8
9
10
方式一:
加上下面这两句话
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 in range(4,49,2)],fontproperties=my_font)  # 哪里需要修改中文 就需要添加fontproperties

练习1

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

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

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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默认不显示中文
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

练习2

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

练习3

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

自定义折线颜色

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制散点图

练习

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

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制条形图

练习

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制横着的条形图

练习

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制多次条形图

练习

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

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

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

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

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

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

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图
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()
matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图

matplolib学习
数据分析之matplotlib使用
绘制折线图
绘制散点图
绘制条形图
绘制直方图