数据可视化matplotlib
1、折线图。
某商品进价49元,售价75元,现在商场新品上架搞促销活动,顾客每多买一件就给优惠1%,但是每人最多可以购买30件。对于商场而言,活动越火爆商品单价越低,但总收入和盈利越多。对于顾客来说,虽然买的越多单价越低,但是消费总金额却是越来越多的,并且购买太多也会因为用不完而导致过期不得不丢弃造成浪费。现在要求计算并使用折线图可视化顾客购买数量num与商家收益、顾客总消费的关系。
2、散点图
某商场开业三个月后,有顾客反应商场一楼部分位置的手机信号不好,个别收银台有时无法正常使用微信支付或支付宝,商场内也有些位置无法正常使用微信。为此,商场安排工作人员在不同位置对手机信号强度进行测试以便进一步提高服务质量和用户体验,测试数据见题目最后,其中每行使用逗号分隔的三个数字分别表示商场内一个位置的x、y坐标和信号强度,其中x、y坐标值以商场西南角为坐标原点且向东为x正轴(共150米)、向北为y正轴(共30米),信号强度以0表示无信号、100表示最强。
编写程序,使用散点图对该商场一楼所有测量位置的手机信号强度进行可视化,既可以直观地发现不同位置信号的强度以便分析原因,也方便观察测试位置的分布是否合理。在散点图中,使用横轴表示x坐标位置、纵轴表示y坐标位置,使用五角星标记测量位置,五角星大小表示信号强度,五角星越大表示信号越强,反之表示信号越弱。同时,为了获得更好的可视化效果,信号强度高于或等于70的位置使用绿色五角星,低于70且高于或等于40的使用蓝色五角星,低于40的位置使用红色五角星。
//商场一楼手机信号强度文件/
0,0,60
0,3,70
5,0,68
10,0,73
0,30,56
0,15,80
1,6,85
5,23,30
25,30,20
30,5,90
50,25,95
80,0,20
85,5,24
83,19,72
82,28,17
148,0,10
140,28,53
150,15,50
100,1,30
99,27,32
70,15,95
60,15,100
120,16,100
90,8,89
92,12,91
73,4,89
72,25,86
70,19,91
118,26,83
80,10,90
38,16,100
25,25,30
40,28,70
120,3,34
130,5,45
125,2,20
115,2,20
//
subplot
import numpy as np
import matplotlib.pyplot as plt
x= np.linspace(0, 2*np.pi, 500) # 创建自变量数组
y1 = np.sin(x) # 创建函数值数组
y2 = np.cos(x)
y3 = np.sin(x*x)
plt.figure(1) # 创建图形
ax1 = plt.subplot(2,2,1) # 第一行第一列图形
ax2 = plt.subplot(2,2,2) # 第一行第二列图形
ax3 = plt.subplot(2,1,2, facecolor='y') # 第二行
plt.sca(ax1) # 选择ax1
plt.plot(x,y1,color='red') # 绘制红色曲线
plt.ylim(-1.2,1.2) # 限制y坐标轴范围
plt.sca(ax2) # 选择ax2
plt.plot(x,y2,'b--') # 绘制蓝色曲线
plt.ylim(-1.2,1.2)
plt.sca(ax3) # 选择ax3
plt.plot(x,y3,'g--')
plt.ylim(-1.2,1.2)
plt.show()