文章原稿备份-数据库内核
资源内容介绍
文章原稿备份-数据库内核 import matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3D # 导入3D绘图工具# 设置全局字体为SimHeiplt.rcParams['font.sans-serif'] = ['SimHei']# 解决保存图像时负号'-'显示为方块的问题plt.rcParams['axes.unicode_minus'] = False# 创建一个新的画布fig = plt.figure()# 在新画布上创建一个3D子图ax = fig.add_subplot(111, projection='3d')# 显示边框ax.axis('on')########################################################################## 图样设置##############关系代数及其等价公式--3.3. 关系代数的空间几何表示############### 设置 x 轴、y 轴和 z 轴的标签ax.set_xlabel('name')ax.set_ylabel('age')ax.set_zlabel('major') # 创建映射字典names = ['小明', '小王', '小张', '小李', '小刘'] # x轴坐标majors = ['计算机', '体育', '美术', '汉语'] # z轴坐标names_sorted = sorted(names)majors_sorted = sorted(majors)name_to_num = {name: num for num, name in enumerate(names_sorted)}major_to_num = {major: num for num, major in enumerate(majors_sorted)}# 设置x轴的刻度和标签ax.set_xticks(range(len(name_to_num)))ax.set_xticklabels(sorted(list(name_to_num.keys()))) # 使用排序后的名字作为标签# 设置z轴的刻度和标签ax.set_zticks(range(len(major_to_num)))ax.set_zticklabels(sorted(list(major_to_num.keys()))) # 使用排序后的专业作为标签########################## End ###################################################################################################### 数据设置# #############关系代数及其等价公式--3.3. 关系代数的空间几何表示################ # 使用 scatter() 方法来绘制3D空间中的点# ax.scatter(name_to_num['小明'], 25, major_to_num['计算机'], color='red', label='小明') # 'color'设置点的颜色# ax.scatter(name_to_num['小王'], 21, major_to_num['体育'], color='blue', label='小王') # 'color'设置点的颜色# ax.scatter(name_to_num['小张'], 21, major_to_num['体育'], color='yellow', label='小张') # 'color'设置点的颜色# # 绘制一条从 (3,0,2) (3,25,2) 的直线# ax.plot([3, 3], [0, 25], [2, 2], 'r-', label='小李')# # 定义网格数据,这里我们假设y和z的范围分别为[0, 25]和[0, 4]# yy, zz = np.meshgrid(np.linspace(0, 25, 10), np.linspace(0, 4, 10))# xx = np.zeros_like(yy) # x坐标始终为0# # 绘制平面# ax.plot_surface(xx, yy, zz, alpha=0.5, color='cyan', label='小刘')# ########################## End ############################# #############关系代数及其等价公式--3.4.1. 选择运算例1################ # 定义网格数据,这里我们假设y和z的范围分别为[0, 25]和[0, 4]# xx, zz = np.meshgrid(np.linspace(0, 4, 10), np.linspace(0, 4, 10))# yy = 21*np.ones_like(xx) # y坐标始终为0# # 绘制age=21平面# ax.plot_surface(xx, yy, zz, alpha=0.5, color='red', label='age=21')# ########################## End ############################# #############关系代数及其等价公式--3.4.1. 选择运算例2################ # 定义网格数据,这里我们假设y和z的范围分别为[0, 25]和[0, 4]# xx, yy = np.meshgrid(np.linspace(0, 4, 10), np.linspace(0, 23, 10))# zz = np.zeros_like(xx) # z坐标始终为0# # 绘制age=21平面# ax.plot_surface(xx, yy, zz, alpha=0.5, color='red', label='age<23 and major=体育')# ########################## End #########################################关系代数及其等价公式--3.3. 关系代数的空间几何表示################ 使用 scatter() 方法来绘制3D空间中的点ax.scatter(name_to_num['小明'], 25, major_to_num['计算机'], color='red', label='小明') # 'color'设置点的颜色ax.scatter(name_to_num['小王'], 21, major_to_num['体育'], color='blue', label='小王') # 'color'设置点的颜色ax.scatter(name_to_num['小张'], 21, major_to_num['体育'], color='yellow', label='小张') # 'color'设置点的颜色ax.scatter(name_to_num['小李'], 24, major_to_num['美术'], color='black', label='小李') # 'color'设置点的颜色ax.scatter(name_to_num['小刘'], 22, major_to_num['汉语'], color='gray', label='小刘') # 'color'设置点的颜色########################## End ###################################################################################################### 数绘图# 如果需要显示图例ax.legend()# 显示图形plt.show()