matplotlib绘图命令折线图plot,柱状图bar,直方图hist,饼图pie,散点图scatter

①折线图plot

1.绘制折线图—单个坐标系

import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif']=['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号

plt.figure(figsize=(20, 8), dpi=80)  # 设置画板尺寸
x = range(60)
y = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 3) for i in x]

x_ch = ["11点{}分".format(i) for i in x]
plt.xticks(x[::5], x_ch[::5])  # 设置x坐标
# plot绘制多张图在一张图形中,直接plt.plot
plt.plot(x, y, label="上海")  # 绘制折线图
plt.plot(x, y_beijing, color='r', linestyle='--', label="北京")  #  绘制折线图

plt.legend(loc="best")  # 显示注释,

plt.xlabel("时间")  # x轴标题
plt.ylabel("温度")  # y轴标题
plt.title("中午11点0分到12点之间的温度变化图示")  # 图形title
plt.savefig(path)  # 保存图片
plt.show()  # 显示图形

matplotlib绘图命令折线图plot,柱状图bar,直方图hist,饼图pie,散点图scatter_第1张图片
2.绘制多个坐标系

import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif']=['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=80)

x = range(60)  # 准备x, y坐标的数据
y_ticks = range(40)  # y的刻度范围
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 3) for i in x]
x_ch = ["11点{}分".format(i) for i in x]  # 构造中文列表的字符串

# 画折线图
axes[0].plot(x, y_shanghai, label="上海")
# 使用plot可以多次画多个折线
axes[1].plot(x, y_beijing, color='r', linestyle='--', label="北京")

# 美化x,y的刻度值
# 第一个参数必须是刻度数字类型,第二个是对应着第一个数字的中文描述
axes[0].set_xticks(x[::5], x_ch[::5])
axes[0].set_yticks(y_ticks[::5])
axes[1].set_xticks(x[::5], x_ch[::5])
axes[1].set_yticks(y_ticks[::5])

# 增加x,y描述信息和标题信息
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[0].set_title("中午11点0分到12点之间的温度变化图示")
axes[1].set_title("中午11点0分到12点之间的温度变化图示")
axes[0].legend(loc="best")
axes[1].legend(loc="best")

plt.show()

matplotlib绘图命令折线图plot,柱状图bar,直方图hist,饼图pie,散点图scatter_第2张图片

②柱状图bar(同样可以用plt.title,plt.xlabel,plt.ylabel)

1.单个

import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif']=['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号
plt.figure(figsize=(20, 8), dpi=80)
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
y = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
x = range(len(movie_name))
plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g','g'])
plt.xticks(x, movie_name)
plt.show()

matplotlib绘图命令折线图plot,柱状图bar,直方图hist,饼图pie,散点图scatter_第3张图片
2.多个

import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif']=['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False  # 用来正常显示负号
plt.figure(figsize=(20, 8), dpi=80)

movie_name = ['雷神3:诸神黄昏','正义联盟','寻梦环游记']
first_day = [10587.6,10062.5,1275.7]
first_weekend=[36224.9,34479.6,11830]
x = range(len(movie_name))

# 画出柱状图
plt.bar([i-0.05 for i in x], first_day, width=0.1, label="首周票房")
# 首周柱状图显示的位置在首日的位置右边
plt.bar([i+0.05 for i in x], first_weekend, width=0.1, label="首周票房")
plt.legend(loc='best')

plt.show()

matplotlib绘图命令折线图plot,柱状图bar,直方图hist,饼图pie,散点图scatter_第4张图片

③直方图hist

# 展现不同电影的时长分布状态
plt.figure(figsize=(20, 8), dpi=100)

# 准备时长数据
time =[131,  98, 125, 131, 124, 139, 131, 117, 128, 108, 135, 138, 131, 102, 107, 114, 119, 128, 121, 142, 127, 130, 124, 101, 110, 116, 117, 110, 128, 128, 115,  99, 136, 126, 134,  95, 138, 117, 111,78, 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, 123, 111, 110, 111, 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,  81,  97, 139, 113,134, 106, 144, 110, 137, 137, 111, 104, 117, 100, 111, 101, 110,105, 129, 137, 112, 120, 113, 133, 112,  83,  94, 146, 133, 101,131, 116, 111,  84, 137, 115, 122, 106, 144, 109, 123, 116, 111,111, 133, 150]
# 定义一个间隔大小
a = 2
# 得出组数
bins = int((max(time) - min(time)) / a)
# 画出直方图
plt.hist(time, bins, density=0)  # 最新版本取消normed,density取代,0代表用频数表示,1代表用频率表示
# 指定刻度的范围,以及步长
plt.xticks(list(range(min(time), max(time)))[::2])
plt.grid(True, linestyle='--', alpha=0.5)
plt.xlabel("电影时长大小")
plt.ylabel("电影的数据量")
plt.grid(True, linestyle='--', alpha=0.5)  # 增加网格,alpha表示不透明度,1不透明,0为透明

plt.show()

matplotlib绘图命令折线图plot,柱状图bar,直方图hist,饼图pie,散点图scatter_第5张图片

④饼图pie

# 展现每部电影的排片的占比
plt.figure(figsize=(20, 8), dpi=100)
# 准备每部电影的名字,电影的排片场次
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
place_count = [60605,54546,45819,28243,13270,9945,7679,6799,6101,4621,20105]
explode = (0, 0.1, 0, 0, 0, 0.2, 0, 0, 0, 0, 0)  # 分裂出去距离
# 通过pie
plt.pie(place_count, labels=movie_name, autopct='%1.2f%%', colors=['b','r','g','y','c','m','y','k','c','g','g'], explode=explode, shadow=True, startangle=90)  # shadow阴影,startangle显示角度
# 指定显示的pie是正圆
plt.axis('equal')
plt.legend(loc='best')
plt.title("排片占比示意图")
plt.show()

matplotlib绘图命令折线图plot,柱状图bar,直方图hist,饼图pie,散点图scatter_第6张图片

5.散点图pie

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
s:大小
c:yanse
market:样式

import numpy as np
import matplotlib.pyplot as plt
N = 1000
x = np.random.randn(N)
y = np.random.randn(N)
N = 10
c = np.random.rand(1000)
plt.scatter(x, y, c=c, marker='>', label='scatter')  # 设置标签
# plt.scatter(x, y, c=c, marker='>', label='scatter')  # 可以画多个
plt.legend(loc='best')
plt.show()

matplotlib绘图命令折线图plot,柱状图bar,直方图hist,饼图pie,散点图scatter_第7张图片

你可能感兴趣的:(人工智能)