折线图
matplotlib.pyplot.plot(x, y)
散点图
matplotlib.pyplot.scatter(x, y)
条形图
matplotlib.pyplot.bar(x, y)
matplotlib.pyplot.barh(x, y)
直方图
matplotlib.pyplot.hist(data, bins, density)
坐标轴刻度
xticks/yticks
图例/标题/网格
label、legend()、title()、grid()
图片大小/保存路径
figure()/savefig()
假设某地3月份、10月份每天白天最高气温分别如下表所示
[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]
[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]
绘制散点图,来寻找气温随时间变化的某种规律
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='/usr/share/fonts/truetype/arphic/uming.ttc')
temp_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]
temp_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]
plt.figure(figsize=(20, 8), dpi=80)
day_3 = range(1,32)
day_10 = range(41, 72)
# scatter()
# 绘制散点图
plt.scatter(day_3, temp_3, label='3月份')
plt.scatter(day_10, temp_10, label='10月份')
# 设置坐标轴刻度
day = list(day_3) + list(day_10)
xtick_labels = ['3月{0}日'.format(i) for i in day_3]
xtick_labels += ['10月{0}日'.format(i-40) for i in day_10]
plt.xticks(day[::3], xtick_labels[::3], rotation=45, fontproperties=my_font)
plt.yticks(range(min(temp_3+temp_10), max(temp_3+temp_10)+1))
# 设置坐标轴标签
plt.xlabel('时间', fontproperties=my_font)
plt.ylabel('温度', fontproperties=my_font)
plt.title('3月份和10月份每天的最高温度', fontproperties=my_font)
# 设置图例
plt.legend(prop=my_font)
plt.show()
绘制条形图
假设假设前20名电影票房数据如下所示(单位:亿)
{‘战狼2’: 56.01, ‘速度与激情’: 26.94, ‘功夫瑜伽’: 17.53, ‘西游伏妖篇’: 16.49,
‘变形金刚5-最后的骑士’: 15.45, ‘摔跤吧爸爸’: 12.96, ‘加勒比海盗5-死无对症’: 11.8, ‘金刚-骷髅岛’: 11.61,
‘极限特工-终极回归’: 11.28, ‘生化危机6-终章’: 11.12, ‘乘风破浪’: 10.49, ‘神偷奶爸3’: 10.3,
‘智取威虎山’: 8.75, ‘大闹天竺’: 7.55, ‘金刚狼3-殊死一战’: 7.32, ‘蜘蛛侠-英雄归来’: 6.99,
‘悟空传’: 6.88, ‘银河护卫队2’: 6.86, ‘情圣’: 6.58, ‘新木乃伊’: 6.23}
试绘制条形图表示电影票房数据
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='/usr/share/fonts/truetype/arphic/uming.ttc')
movies = {
'战狼2': 56.01, '速度与激情': 26.94, '功夫瑜伽': 17.53, '西游伏妖篇': 16.49,
'变形金刚5-最后的骑士': 15.45, '摔跤吧爸爸': 12.96, '加勒比海盗5-死无对症': 11.8, '金刚-骷髅岛': 11.61,
'极限特工-终极回归': 11.28, '生化危机6-终章': 11.12, '乘风破浪': 10.49, '神偷奶爸3': 10.3,
'智取威虎山': 8.75, '大闹天竺': 7.55, '金刚狼3-殊死一战': 7.32, '蜘蛛侠-英雄归来': 6.99,
'悟空传': 6.88, '银河护卫队2': 6.86, '情圣': 6.58, '新木乃伊': 6.23
}
plt.figure(figsize=(20, 8), dpi=80)
# bar()
# 绘制条形图
# width表示条的宽度
plt.bar(range(len(movies)), movies.values(), width=0.3)
# 设置字符串到x轴
plt.xticks(range(len(movies)), movies.keys(), rotation=45, fontproperties=my_font)
plt.show()
绘制横着的条形图
from matplotlib import pyplot as plt
from matplotlib import font_manager
my_font = font_manager.FontProperties(fname='/usr/share/fonts/truetype/arphic/uming.ttc')
movies = {
'战狼2': 56.01, '速度与激情': 26.94, '功夫瑜伽': 17.53, '西游伏妖篇': 16.49,
'变形金刚5-最后的骑士': 15.45, '摔跤吧爸爸': 12.96, '加勒比海盗5-死无对症': 11.8, '金刚-骷髅岛': 11.61,
'极限特工-终极回归': 11.28, '生化危机6-终章': 11.12, '乘风破浪': 10.49, '神偷奶爸3': 10.3,
'智取威虎山': 8.75, '大闹天竺': 7.55, '金刚狼3-殊死一战': 7.32, '蜘蛛侠-英雄归来': 6.99,
'悟空传': 6.88, '银河护卫队2': 6.86, '情圣': 6.58, '新木乃伊': 6.23
}
plt.figure(figsize=(20, 8), dpi=80)
# barh()
# 绘制横向条形图
# height表示条的高度
plt.barh(range(len(movies)), movies.values(), height=0.3)
# 设置字符串到y轴
plt.yticks(range(len(movies)), movies.keys(), fontproperties=my_font)
plt.show()
绘制多次条形图
假设三天内[‘猩球崛起3-终极之战’, ‘敦刻尔克’, ‘蜘蛛侠-英雄归来’, ‘战狼2’]的票房数变化情况为
[15746, 312, 4497, 319]
[12357, 156, 2045, 168]
[2358, 399, 2358, 362]
试绘制条形图,表示这三天内这些电影的票房数据
from matplotlib import pyplot as lpt from matplotlib import font_manager my_font = font_manager.FontProperties(fname='/usr/share/fonts/truetype/arphic/uming.ttc') movies = ['猩球崛起3-终极之战', '敦刻尔克', '蜘蛛侠-英雄归来', '战狼2'] day_2 = [15746, 312, 4497, 319] day_1 = [12357, 156, 2045, 168] day_0 = [2358, 399, 2358, 362] x_0 = list(range(len(movies))) x_1 = [i+0.2 for i in x_0] x_2 = [i+0.2*2 for i in x_0] # 绘制多次条形图 plt.bar(x_0, day_0, width=0.2, label='第一天') plt.bar(x_1, day_1, width=0.2, label='第二天') plt.bar(x_2, day_2, width=0.2, label='第三天') plt.xticks(x_1, movies, fontproperties=my_font) # 设置图例 plt.legend(prop=my_font) plt.show()绘制直方图
假设有250部电影的时长,希望统计出这些电影时长的分布状态(例如100分钟到120分钟电影的数量、出现的频率)等信息
应该如何处理这些数据
电影的时长这里采用随机生成的方式,在90到180分钟之间
from matplotlib import pyplot as plt
from matplotlib import font_manager
import random
my_font = font_manager.FontProperties(fname='/usr/share/fonts/truetype/arphic/uming.ttc')
random.seed(40)
movies_time = []
for i in range(250):
movies_time.append(random.randint(90, 180))
plt.figure(figsize=(20, 8), dpi=80)
# 计算组距、组数
d = 5
num_bins = (max(movies_time)-min(movies_time))//d
# hist()
# 传入数据与组数即可
# 将movies_time分为20组
# density=True表示显示比率,等于False显示个数
plt.hist(movies_time, num_bins, density=True)
plt.xticks(range(min(movies_time), max(movies_time)+d, d))
plt.grid(alpha=0.3)
plt.show()



