考试报名
考试报名
考试内容
考试大纲
在线客服
返回顶部

备考刷题,请到

CDA认证小程序

在使用 Seaborn 的 FacetGrid 进行分面绘图时,以下代码片段存在一个常见的逻辑陷阱。请问该代码执行后,最可能出现的情况是? import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset("tips") g = sns.FacetGrid(tips, col="time", row="smoker") # 尝试直接映射 matplotlib 的绘图函数 g.map(plt.hist, "total_bill") # 用户试图添加标题 plt.title("Distribution of Total Bill") plt.show()
A. 代码正常运行,四个子图上方居中显示一个大标题 "Distribution of Total Bill"。
B. 代码正常运行,但标题 "Distribution of Total Bill" 只会出现在最后一个被绘制的子图上,或者位置重叠混乱,不符合分面图的整体标题预期。
C. 代码报错,因为 FacetGrid 必须配合 seaborn 的绘图函数(如 sns.histplot),不能混用 plt.hist。
D. 代码正常运行,标题会自动应用到整个 Grid 的所有子图中心。
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

原理考察:FacetGrid 是一个管理多个子图(Axes)的对象。当使用 g.map() 时,Seaborn 会在每个子图上重复调用绘图函数。然而,直接使用 plt.title() 操作的是当前激活的 axes(通常是最后一个被操作的 axes),而不是整个 Grid 对象。 代码分析: g.map(plt.hist, "total_bill") 成功在每个分面上绘制直方图(FacetGrid 支持映射 matplotlib 函数)。 plt.title(...) 是 pyplot 的全局命令。在 g.map 执行完后,当前激活的 axes 往往是 Grid 中的最后一个子图。因此,标题只会加在那一个子图上,或者如果布局未调整,看起来位置不对。 正确做法:应该使用 g.fig.suptitle("...") 来为整个 Figure 添加总标题,或者使用 g.set_titles() 来为每个子图设置单独的标题。 错误选项分析: A/D 错:plt.title() 不具备感知 FacetGrid 整体结构的能力,无法自动居中于整个网格。 C 错:FacetGrid.map() 的核心功能之一就是允许用户传入任何接受数据并能在 axes 上绘图的 matplotlib 函数(如 plt.hist, plt.scatter 等),不仅限于 seaborn 函数。