Python数据科学库第二天

matplotlib折线图添加网格:

from matplotlib import pyplot as pl
from matplotlib import font_manager

# 设置显示中文
# cmd中fc-list :lang=zh可以查询系统中的所有中文字体
my_font = font_manager.FontProperties(fname='C:/Windows/fonts/msyhl.ttc')

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)
fig = pl.figure(figsize=(20, 10), dpi= 60)
pl.plot(x, a)

# 调整x轴和y轴
_x = list(x)
x_labels = ['{}岁'.format(i) for i in range(11, 31)]
# 取步长数字和字符串要一一对应,而且数据长度要想等,rotation是旋转坐标轴的参数
pl.xticks(_x, x_labels, rotation=45, fontproperties = my_font)

# 添加描述信息
pl.xlabel('年龄', fontproperties = my_font)
pl.ylabel('对象个数', fontproperties = my_font)
pl.title('从十一岁到三十岁的每年对象个数', fontproperties = my_font)

# 绘制网格,alpha改变网格透明度,数值越小越透明
pl.grid(alpha = 0.5)

pl.show()

在同一张图中绘制两个折线图:

from matplotlib import pyplot as pl
from matplotlib import font_manager

# 设置显示中文
# cmd中fc-list :lang=zh可以查询系统中的所有中文字体
my_font = font_manager.FontProperties(fname='C:/Windows/fonts/msyhl.ttc')

a = [1, 0, 1, 1, 2, 4, 3, 2, 3, 4, 4, 5, 6, 5, 4, 3, 3, 1, 1, 1]
b = [1, 0, 3, 1, 2, 2, 3, 3, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1]
x = range(11, 31)
fig = pl.figure(figsize=(20, 10), dpi=60)
pl.plot(x, a, label='自己', color='r', linestyle=':')
pl.plot(x, b, label='同桌', color='cyan', linestyle='-.')

# 调整x轴和y轴
_x = list(x)
x_labels = ['{}岁'.format(i) for i in range(11, 31)]
# 取步长数字和字符串要一一对应,而且数据长度要想等,rotation是旋转坐标轴的参数
pl.xticks(_x, x_labels, rotation=45, fontproperties=my_font)

# 添加描述信息
pl.xlabel('年龄', fontproperties=my_font)
pl.ylabel('对象个数', fontproperties=my_font)
pl.title('从十一岁到三十岁的每年对象个数', fontproperties=my_font)

# 绘制网格,alpha改变网格透明度,数值越小越透明
pl.grid(alpha=0.5)

# 添加图例,这里必须用prop才能显示中文
pl.legend(prop=my_font, loc='upper left')

pl.show()

matplotlib绘制散点图:
绘制散点图用.scatter()

from matplotlib import pyplot as pl
from matplotlib import font_manager

y_3 = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18,
     21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22, 22, 23]
y_10 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20,
     21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13, 12, 13, 6]

# 显示中文
my_font = font_manager.FontProperties(fname='C:/Windows/fonts/msyhl.ttc')

x_3 = range(1, 32)
x_10 = range(51, 82)

# 设置图形
pl.figure(figsize=(20, 7), dpi=60)

pl.scatter(x_3, y_3, color='cyan', label='3月')
pl.scatter(x_10, y_10, color='r', label='10月')

# 设置x轴y轴
_x = list(x_3) + list(x_10)
x_label = ['3月{}号'.format(i) for i in x_3]
x_label += ['10月{}号'.format(i-50) for i in x_10]
pl.xticks(_x[::3], x_label[::3], rotation=45, fontproperties=my_font)

# 添加图例
pl.legend(prop=my_font, loc='upper left')

# 添加描述信息
pl.xlabel('时间', fontproperties=my_font)
pl.ylabel('温度 单位(℃)', fontproperties=my_font)
pl.title('气温每日变化', fontproperties=my_font)

pl.show()

matplotlib绘制条形图:
绘制条形图用.bar(),横着绘制条形图可以用.barh()

from matplotlib import pyplot as pl
from matplotlib import font_manager

a = ["战狼2", "速度与激情8", "功夫瑜伽", "西游伏妖篇", "变形金刚5:最后的骑士", "摔跤吧!爸爸",
     "加勒比海盗5:死无对证", "金刚:骷髅岛", "极限特工:终极回归", "生化危机6:终章", "乘风破浪", "神偷奶爸3",
     "智取威虎山", "大闹天竺", "金刚狼3:殊死一战", "蜘蛛侠:英雄归来", "悟空传", "银河护卫队2", "情圣", "新木乃伊"]
b = [56.01, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11.28, 11.12, 10.49,
   10.3, 8.75, 7.55, 7.32, 6.99, 6.88, 6.86, 6.58, 6.23]


# 显示中文
my_font = font_manager.FontProperties(fname='C:/Windows/fonts/msyhl.ttc')

# 设置图形
pl.figure(figsize=(20, 10), dpi=60)

# 绘制横着的条形图
pl.barh(range(len(a)), b, height=0.3, color='cyan')

# 设置x轴y轴
pl.yticks(range(len(a)), a, fontproperties=my_font)
pl.xticks(range(61)[::3])

# 添加描述信息
pl.ylabel('电影', fontproperties=my_font)
pl.xlabel('票房 单位亿', fontproperties=my_font)
pl.title('个电影的票房情况', fontproperties=my_font)

# 添加网格
pl.grid(alpha=0.5)

pl.show()

绘制多次条形图

from matplotlib import pyplot as pl
from matplotlib import font_manager

a = ["猩球崛起3:终极之战", "敦刻尔克", "蜘蛛侠:英雄归来", "战狼2"]
b_16 = [15746, 312, 4497, 319]
b_15 = [12357, 156, 2045, 168]
b_14 = [2358, 399, 2358, 362]
bar_width = 0.2
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]
# 显示中文
my_font = font_manager.FontProperties(fname='C:/Windows/fonts/msyhl.ttc')

# 设置图形
pl.figure(figsize=(20, 10), dpi=60)

# 绘制横着的条形图
pl.bar(x_14, b_14, width=bar_width, color='cyan', label='9月14号')
pl.bar(x_15, b_15, width=bar_width, color='r', label='9月15号')
pl.bar(x_16, b_16, width=bar_width, color='y', label='9月16号')

# 设置x轴y轴
pl.xticks(x_15, a, fontproperties=my_font)

# 添加描述信息
pl.xlabel('电影', fontproperties=my_font)
pl.ylabel('票房 单位亿', fontproperties=my_font)
pl.title('个电影的票房情况', fontproperties=my_font)

# 添加网格
pl.grid(alpha=0.5)

# 添加图例
pl.legend(prop=my_font, loc='upper right')

pl.show()

matplotlib绘制直方图:
直方图用.hist()绘制

from matplotlib import pyplot as pl

a = [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]

# 计算组数
d = 3 # 组距
num_bins = (max(a) - min(a))//d

# 设置图形
pl.figure(figsize=(20, 10), dpi=60)

pl.hist(a, num_bins)

# 设置x轴
pl.xticks(range(min(a), max(a) + d, d))

# 添加网格
pl.grid(alpha=0.5)

pl.show()

练习:

# 用条形图模拟直方图
from matplotlib import pyplot as pl

interval = [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 60, 90]
width = [5, 5, 5, 5, 5, 5, 5, 5, 5, 15, 30, 60]
quantity = [836, 2737, 3723, 3926, 3596, 1438, 3273, 642, 824, 613, 215, 47]

# 设置图形
pl.figure(figsize=(20, 10), dpi=60)

pl.bar(range(len(quantity)), quantity, width=1)

# 设置x轴
_x = [i - 0.5 for i in range(13)]
x_label = interval + [150]
pl.xticks(_x, x_label)

# 添加网格
pl.grid(alpha=0.5)

pl.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值