用代码实现上述报告
时间: 2024-02-16 15:05:27 浏览: 56
好的,由于您提供的数据比较简单,我将使用Python编程语言和相关的数据可视化库来实现上述报告。请确保您已经安装了以下库:numpy, pandas, matplotlib, seaborn, folium, wordcloud。
以下是代码实现:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import folium
from wordcloud import WordCloud
# 读取数据
data = pd.read_csv('subway_stations.csv')
# 城市站点分布情况地图
city_map = folium.Map(location=[data['维度'].mean(), data['经度'].mean()], zoom_start=10)
for _, row in data.iterrows():
folium.Marker(location=[row['维度'], row['经度']], popup=row['地铁站点名称']).add_to(city_map)
city_map.save('city_map.html')
# 站点数量统计图表
station_count = data.groupby('行政区')['地铁站点名称'].count().sort_values(ascending=False)
plt.figure(figsize=(8, 6))
sns.barplot(x=station_count.index, y=station_count.values)
plt.title('各区站点数量统计')
plt.xlabel('行政区')
plt.ylabel('站点数量')
plt.xticks(rotation=45)
plt.savefig('station_count.png', dpi=300)
# 线路分布图
lines = data['地铁路线'].unique()
line_map = folium.Map(location=[data['维度'].mean(), data['经度'].mean()], zoom_start=10)
colors = ['red', 'blue', 'green', 'purple', 'orange', 'darkred', 'lightred', 'beige', 'darkblue', 'darkgreen', 'cadetblue', 'darkpurple', 'white', 'pink', 'lightblue', 'lightgreen', 'gray', 'black', 'lightgray']
for i, line in enumerate(lines):
line_data = data[data['地铁路线'] == line]
for _, row in line_data.iterrows():
folium.CircleMarker(location=[row['维度'], row['经度']], radius=3, color=colors[i], fill=True, fill_color=colors[i], popup=row['地铁站点名称']).add_to(line_map)
line_map.save('line_map.html')
# 行政区域站点数量热力图
count_data = data.groupby(['行政区', '经度', '维度'])['地铁站点名称'].count().reset_index()
heatmap_data = count_data.pivot(index='行政区', columns='经度', values='地铁站点名称')
plt.figure(figsize=(10, 8))
sns.heatmap(heatmap_data, cmap='Reds', annot=True, fmt='d')
plt.title('北京地铁站点数量热力图')
plt.savefig('heatmap.png', dpi=300)
# 站点名称词云图
text = ' '.join(data['地铁站点名称'])
wordcloud = WordCloud(width=800, height=400, background_color='white', font_path='msyh.ttc').generate(text)
plt.figure(figsize=(10, 8))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.savefig('wordcloud.png', dpi=300)
```
以上代码将生成四个文件:city_map.html, station_count.png, line_map.html, heatmap.png, wordcloud.png。您可以根据需要自己调整图表的样式和参数。
阅读全文