import matplotlib.pyplot as plt
import random
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
#x代表11点到12点的60分钟
x = range(60)
#y表示60个15到18的随机实数
y = [random.uniform(15,18) for i in x]
#y1表示60个3到4的随机实数
y1 = [random.uniform(3,4) for i in x]
x_ticks_label = ['11点{}分'.format(i) for i in x]
y_ticks = range(40)
#创建画布
plt.figure(figsize=(20,8),dpi=100)
# 绘制图像
plt.plot(x,y,label='上海')
plt.plot(x,y1,color='r',linestyle='--',label='北京')
# 修改刻度
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
#添加x,y轴和标题的标签
plt.xlabel('时间')
plt.ylabel('温度')
plt.title('中午11点到12点某城市温度变化图',fontsize=20)
#绘制网格
plt.grid(True,linestyle='--',alpha=1)
#保存图像,并且savefig必须在show之前执行,show表示显示并释放资源
plt.savefig('temp.png')
#合并标签
plt.legend(loc='best')
plt.show()
多图像显示
import matplotlib.pyplot as plt
import random
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
#x代表11点到12点的60分钟
x = range(60)
#y表示60个15到18的随机实数
y = [random.uniform(15,18) for i in x]
#y1表示60个3到4的随机实数
y1 = [random.uniform(3,4) for i in x]
x_ticks_label = ['11点{}分'.format(i) for i in x]
y_ticks = range(40)
#创建画布
# plt.figure(figsize=(20,8),dpi=100)
fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)
# 绘制图像
axes[0].plot(x,y,label='上海')
axes[1].plot(x,y1,color='r',linestyle='--',label='北京')
# 修改刻度
# plt.xticks(x[::5],x_ticks_label[::5])
# plt.yticks(y_ticks[::5])
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])
# plt.xlabel('时间')
# plt.ylabel('温度')
# plt.title('中午11点到12点某城市温度变化图',fontsize=20)
axes[0].set_xlabel('时间')
axes[0].set_ylabel('温度')
axes[0].set_title('中午11点到12点某城市温度变化图',fontsize=20)
axes[1].set_xlabel('时间')
axes[1].set_ylabel('温度')
axes[1].set_title('中午11点到12点某城市温度变化图',fontsize=20)
# plt.grid(True,linestyle='--',alpha=1)
axes[0].grid(True,linestyle='--',alpha=1)
axes[1].grid(True,linestyle='--',alpha=1)
# plt.legend(loc='best')
axes[0].legend(loc=0)
axes[1].legend(loc=0)
plt.savefig('temp.png')
plt.show()
其他图像的绘制
折线图:plot
散点图:scatter
柱状图:bar
直方图:hist
饼图:pie
散点图的绘制实例:
import matplotlib.pyplot as plt
x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01, 20.67, 288.64,
163.56, 120.06, 207.83, 342.75, 147.9 , 53.06, 224.72, 29.51,
21.61, 483.21, 245.25, 399.25, 343.35]
y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61, 24.9 , 239.34,
140.32, 104.15, 176.84, 288.23, 128.79, 49.64, 191.74, 33.1 ,
30.74, 400.02, 205.35, 330.64, 283.45]
plt.figure(figsize=(20,8),dpi=100)
plt.scatter(x,y)
plt.show()
柱状图的绘制示例:
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# 电影名字
movie_name = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
# 横坐标
x = range(len(movie_name))
# 票房数据
y = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
plt.figure(figsize=(20,8),dpi=100)
plt.bar(x,y,width=0.5,color=['b','r','g','y','c','m','y','k','c','g','b'])
plt.xticks(x,movie_name)
plt.title("电影票房收入对比")
plt.grid()
plt.show()