第2关:文本可视化 请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,在右侧编辑器补充代码,对上图代码进行修改添加 mask 参数,使得绘制图形形状为房子形状。 具体绘图请按照以下要求可视化: 数据文件路径为 Task2/listings.csv; 图形的 figsize 为 (10, 10); 保存文件为 Task2/img/T1.png; 为了使每次的图形一致,设置 random_state 为 2019。
时间: 2024-02-15 22:02:14 浏览: 318
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 读取数据
df = pd.read_csv('Task2/listings.csv')
# 设置随机种子
sns.set(style='white', palette='muted', color_codes=True, rc={'figure.figsize':(10,10)})
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 2.5})
# 开始绘图
plt.figure(figsize=(10, 10))
sns.scatterplot(x='longitude', y='latitude', data=df, hue='price', alpha=0.8, mask=None, palette='muted')
plt.title('Airbnb Listings in San Francisco')
plt.savefig('Task2/img/T1.png')
plt.show()
```
在上面的代码中,我们需要在 `sns.scatterplot` 函数中添加一个 `mask` 参数,实现绘制房子形状的要求。
具体实现方式是,我们先创建一个与 `df` 数组形状相同的布尔型数组,然后将数组中所有元素都设置为 False。接着,我们可以通过 numpy 的数组切片语法,将这个数组的一部分元素设置为 True,从而实现绘制房子形状的目的。
下面是完整的代码实现:
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
# 读取数据
df = pd.read_csv('Task2/listings.csv')
# 创建遮罩数组
mask = np.zeros_like(df['price'], dtype=np.bool)
mask[df['price'] > 500] = True
# 设置随机种子
sns.set(style='white', palette='muted', color_codes=True, rc={'figure.figsize':(10,10)})
sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 2.5})
# 开始绘图
plt.figure(figsize=(10, 10))
sns.scatterplot(x='longitude', y='latitude', data=df, hue='price', alpha=0.8, mask=mask, palette='muted')
plt.title('Airbnb Listings in San Francisco')
plt.savefig('Task2/img/T1.png')
plt.show()
```
运行上述代码后,将在 `Task2/img` 目录下生成一张名为 `T1.png` 的图片,图片内容为符合要求的房子形状。
阅读全文