Matplotlib作图(二)
一、使用Matplotlib时需要调用的库
1.在使用Matplotlib前,我们需用如下代码进行库的调用,否则不能正常使用Matplotlib进行作图:
import matplotlib.pyplot as plt
这篇文章是对(一)的3D图和散点图的补充哈,对于3D图,我们需要额外调用一个库
from mpl_toolkits.mplot3d import Axes3D
2.在使用Matplotlib时,可能会出现一些可以忽略的警告(warning),为了美观,你可以使用如下代码:
import warnings # 不管是调用模型还是调整参数,都充满了满篇红色,有些可忽略,有些不可忽略
warnings.filterwarnings("ignore")
二、Matplotlib实战
2.1 3D图
比起二维平面图,3D图可以很好的反映三个变量之间存在的关系,当然了,我们使用的仍然是(一)中的数据集
x1 = data[['sales_region_code', 'first_cate_code', 'second_cate_code', 'ord_qty']]
x2 = pd.DataFrame(x1['sales_region_code'])
y2 = pd.DataFrame(x1['first_cate_code'])
z2 = pd.DataFrame(x1['ord_qty'])
# z2 = np.array([int(x) for x in z2])
# z2 = (x - z2.min()) / (z2.max() - z2.min())
x = x2.values
x = np.ravel(x).astype(int)
y = y2.values
y = np.ravel(y).astype(int)
z = z2.values
z = np.ravel(z).astype(int)
fig = plt.figure()
# ax = fig.add_subplot(111, projection='3d')
ax = Axes3D(fig)
ax.set_xlabel('sales_region_code') # 横轴名称
ax.set_ylabel('first_cate_code')
ax.set_zlabel('ord_qty')
ax.scatter(x, y ,z)
plt.savefig(r'大类编码、地区区域和需求量的关系.png')
plt.show()
其中,data为上述所使用的数据集的变量名,接下来是一些函数和参数的解释:
- figsize=(10,6):x = np.ravel(x).astype(int):这是将x进行降维处理,并将降维后的数据转换成int型数据,目的是可以将其作为横坐标导入到fig中
- ax = Axes3D(fig):创建一个3D子图
- ax.scatter(x, y ,z):这里的画图方式是将每一个数据点作为散点画在三维图中
- plt.show():展示图片,没有这一行代码的话,可能会出现虽然代码运行成功,但是无法显示图像的情况
下面是结果图:
2.2 散点图
其实上面已经运用过散点图了,但是数据点过多,图像过于模糊,所以下面介绍一下数据点较少时的散点图:
x1 = data[['sales_region_code', 'first_cate_code', 'second_cate_code', 'ord_qty']]
# x2 = x1['sales_region_code'].head(50)
# y2 = x1['first_cate_code'].head(50)
z2 = x1['ord_qty'].head(50)
# z = np.array([int(x) for x in z2])
x = range(1,len(z2)+1)
plt.scatter(x, z2)
plt.show()
这里只取了前五十行的数据
下面是结果图: