数据分析篇(二)
- 2019 年 10 月 6 日
- 筆記
# 条形图
from matplotlib import pyplot as plt
from matplotlib import font_manager
# 设置中文字体
my_font = font_manager.FontProperties(fname = "C:/Windows/Fonts/simsun.ttc",size=14)
# 进行电影票房统计,数据来源:58921.com
a = ['战狼二','红海行动','美人鱼','唐人街探案','我不是药神']
b = [56.39,36.22,33.9,33.71,30.75]
# 设置图形大小
plt.figure(figsize=(12,10),dpi=80)
# 绘制条形图用bar, width表示宽度
plt.bar(range(len(a)),b,width=0.4)
# 调整x轴为汉字
plt.xticks(range(len(a)),a,fontProperties = my_font)
# 添加描述信息
plt.xlabel("电影名称",fontProperties = my_font)
plt.ylabel("票房(亿)",fontProperties = my_font)
plt.title("电影票房",fontProperties = my_font)
plt.show()
效果图:
# 横向条形图用barh绘制,我们只需要y轴显示电影名字
from matplotlib import pyplot as plt
from matplotlib import font_manager
# 设置中文字体
my_font = font_manager.FontProperties(fname = "C:/Windows/Fonts/simsun.ttc",size=14)
# 进行电影票房统计,数据来源:58921.com
a = ['战狼二','红海行动','美人鱼','唐人街探案','我不是药神']
b = [56.39,36.22,33.9,33.71,30.75]
# 设置图形大小
plt.figure(figsize=(12,10),dpi=80)
# 绘制横向条形图用barh,这里不用width用height
plt.barh(range(len(a)),b,height=0.4)
# 调整y轴为汉字
plt.yticks(range(len(a)),a,fontProperties = my_font)
# 添加描述信息
plt.xlabel("票房(亿)",fontProperties = my_font)
plt.ylabel("电影名称",fontProperties = my_font)
plt.title("电影票房",fontProperties = my_font)
plt.show()
效果图:
多条条形图
实例:
# 多条条形图
from matplotlib import pyplot as plt
from matplotlib import font_manager
# 设置中文字体
my_font = font_manager.FontProperties(fname = "C:/Windows/Fonts/simsun.ttc",size=14)
# a表示电影名称
a = ['海王','龙猫','印度合伙人','网络迷踪','无名之辈']
# 2018-12-17日依次票房
d_17 = [4135,791,539,238,180]
# 2018-12-18日依次票房
d_18 = [3655,673,435,182,148]
# 2018-12-19日依次票房
d_19 = [3303,611,469,181,160]
# 设置图形大小
plt.figure(figsize=(12,10),dpi=80)
# 绘制x轴
# 每天的往后移动0.3,也就是width的值
x_17 = list(range(len(a)))
x_18 = [i+0.3 for i in x_17]
x_19 = [i+0.3 for i in x_18]
# 绘制d_17图像
plt.bar(x_17,d_17,width=0.3,label='2018-12-17日')
# 绘制d_18图像
plt.bar(x_18,d_18,width=0.3,label='2018-12-18日')
# 绘制d_19图像
plt.bar(x_19,d_19,width=0.3,label='2018-12-18日')
# 右上角显示中文分类
plt.legend(prop = my_font)
# 在中间显示电影名称
plt.xticks(x_18,a,fontProperties = my_font)
plt.xlabel("电影名称",fontProperties = my_font)
plt.ylabel("票房(万)",fontProperties = my_font)
plt.title("电影票房",fontProperties = my_font)
plt.show()
效果图:
直方图
实例:
直方图的样子和条形图差不多,直方图常用于统计某个时间段的频率。
实例:
# 用直方图来有统计某个区间出现的次数
import random
from matplotlib import pyplot as plt
from matplotlib import font_manager
# 设置中文字体
my_font = font_manager.FontProperties(fname = "C:/Windows/Fonts/simsun.ttc",size=14)
# a 生成300个1-100的随机数
a = [random.randint(1,100) for i in range(300)]
# 设置图形大小
plt.figure(figsize=(12,10),dpi=80)
# 绘制直方图用hish函数
# 第一个参数就是我们的数字列表
# 第二个参数表示分成多少组
# 组数在数学中计算是(最大值-最小值)/组距(自己设置)
# 这里我们设置组距为3
bin_width = 3
# 计算我们需要分成多少组
num_bins = int((max(a)-min(a))//bin_width)
plt.hist(a,num_bins)
# 设置x轴刻度,步长为我们的组距
plt.xticks(range(min(a),max(a)+bin_width,bin_width))
# 给个表格,方面我们看清数据,透明度为0.5
plt.grid(alpha=0.5)
plt.show()
效果图:
matplotlib 还可以画出其他的图形,这里就不说了,大同小异。