本文已参与「新人创作礼」活动,一起开启掘金创作之路。
matplotlib,we can do more
绘制直线图
1.a设置图片大小,b保存图片,c设置X轴或者Y轴刻度
import matplotlib.pyplot as plt
# a设置图片大小
fig = plt.figure(figsize=(20, 10), dpi=80)
# 设置数据
x = range(2, 26, 2)
y = [13, 15, 16, 16, 17, 18, 18, 19, 23, 25, 25, 15]
# 绘制
plt.plot(x, y)
# c设置x的刻度,y轴的刻度
plt.xticks(range(2, 25))
plt.yticks(range(2, 25))
# b保存图片
plt.savefig("./temperature.png")
# 显示图片
plt.show()
2.matplotlib设置中文,添加图形的描述信息
# 查看matplotlib支持的字体
from matplotlib import font_manager
a = sorted([f.name for f in font_manager.fontManager.ttflist])
for i in a:
print(i)
# 设置中文
# 1.在.py文件最上面加上
#-*- coding: utf-8 -*-
# 2. 然后在文件头部加上
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
import random
import matplotlib.pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = range(0, 6)
y = [random.randint(20, 35) for i in range(6)]
fig = plt.figure(figsize=(10, 8), dpi=80)
# 调整刻度
x_axis = x
x_xticks = ['10时{}0分'.format(i + 1) for i in x_axis]
plt.xticks(x_axis, x_xticks, rotation=270)
# 添加图形的描述信息
plt.xlabel("时间")
plt.ylabel("温度 单位(摄氏度)")
plt.title("10点钟的气温变化情况")
plt.plot(x, y)
plt.show()
绘制散点图
from matplotlib import pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
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, 19, 21, 22, 22, 22,
23, 20]
y_10 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 21, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 10,
13, 14, 13]
x_3 = range(1, 32)
x_10 = range(51, 82)
# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)
# 散点图方法,并添加图例
g3 = plt.scatter(x_3, y_3,color='red')
g10 = plt.scatter(x_10, y_10,color='green')
# 调整X轴刻度
_x = list(x_3) + list(x_10)
_xtick_labels = ['3月{}日'.format(i) for i in x_3]
_xtick_labels += ['10月{}日'.format(i) for i in x_10]
plt.xticks(_x[::3], _xtick_labels[::3], rotation=45)
# 添加描述信息
plt.xlabel('时间')
plt.ylabel('温度')
plt.title('标题')
# 图例信息
plt.legend(handles=[g3, g10], labels=['3月', '10月'],loc="upper left")
plt.savefig('../pics/散点图.jpg')
plt.show()
绘制条形图
单个竖型条形图
from matplotlib import pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
a = ['长津湖', '战狼2', '速度与激情8', '功夫瑜伽', '西游伏妖篇', '变形金刚5:最后的骑士', '加勒比海盗']
b = [56.01, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8]
# 设置图片大小
plt.figure(figsize=(10,8),dpi=80)
# 绘制条形图
plt.bar(range(len(a)), b, color='green', width=0.3)
# 设置X轴刻度
plt.xticks(range(len(a)), a, rotation=45)
plt.savefig('../pics/条形图.jpg')
plt.show()
单个横向条形图
from matplotlib import pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
a = ['长津湖', '战狼2', '速度与激情8', '功夫瑜伽', '西游伏妖篇', '变形金刚5:最后的骑士', '加勒比海盗']
b = [56.01, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8]
# 设置图片大小
plt.figure(figsize=(10, 8), dpi=80)
# 绘制横向条形图
plt.barh(range(len(a)), b, height=0.3, color='orange')
# 设置X轴刻度
plt.yticks(range(len(a)), a, rotation=45)
plt.savefig('../pics/横向条形图')
plt.show()
多个竖型条形图
from matplotlib import pyplot as plt
# 设置中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
a = ['猩球崛起', '敦刻尔克', '蜘蛛侠', '战狼2']
b_14 = [2358, 399, 2358, 362]
b_15 = [12357, 156, 2045, 168]
b_16 = [15746, 312, 4497, 319]
# 设置一个条形的宽度
bar_width = 0.3
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=(11, 8), dpi=80)
b1 = plt.bar(range(len(a)), b_14, width=bar_width,color='pink')
b2 = plt.bar(x_15, b_15, width=bar_width,color='purple')
b3 = plt.bar(x_16, b_16, width=bar_width,color='brown')
# 设置刻度
plt.xticks(x_15, a)
plt.legend(handles=[b1,b2,b3],labels=['14号','15号','16号'],loc="upper left")
plt.savefig('../pics/多个条形图.jpg')
plt.show()