用python做出本月电影票房可视化图表
时间: 2023-12-17 18:04:27 浏览: 34
要做出本月电影票房的可视化图表,我们需要先获取数据并进行处理。我们可以选择使用豆瓣电影的API,获取本月电影的票房信息。
以下是通过豆瓣API获取本月电影票房信息的Python代码:
```python
import requests
import datetime
today = datetime.datetime.now().strftime('%Y-%m')
url = f"https://api.douban.com/v2/movie/in_theaters?city=北京&start=0&count=1000&apikey=0b2bdeda43b5688921839c8ecb20399b"
response = requests.get(url).json()
movies = []
for movie in response['subjects']:
if today in movie['mainland_pubdate']:
movies.append({
'title': movie['title'],
'box_office': movie['box_info'],
'score': movie['rating']['average'],
'vote_count': movie['ratings_count']
})
movies = sorted(movies, key=lambda k: k['box_office'], reverse=True)
```
上面的代码会获取当前月份在北京放映的电影,并将电影按票房从高到低排序。
接下来,我们可以使用matplotlib库进行可视化。以下是绘制电影票房排行榜的柱形图的Python代码:
```python
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
plt.bar(range(len(movies)), [int(movie['box_office'].replace('万', '')) for movie in movies], tick_label=[movie['title'] for movie in movies])
plt.xticks(rotation=90)
plt.xlabel('电影')
plt.ylabel('票房(万元)')
plt.title(f'{today} 北京电影票房排行榜')
plt.show()
```
上面的代码会生成一个柱形图,横轴是电影名称,纵轴是票房(单位:万元)。我们使用`xticks`函数将横轴的电影名称旋转90度,以免名称过长无法显示。最后,我们使用`show`函数显示图表。
完整代码如下:
```python
import requests
import datetime
import matplotlib.pyplot as plt
today = datetime.datetime.now().strftime('%Y-%m')
url = f"https://api.douban.com/v2/movie/in_theaters?city=北京&start=0&count=1000&apikey=0b2bdeda43b5688921839c8ecb20399b"
response = requests.get(url).json()
movies = []
for movie in response['subjects']:
if today in movie['mainland_pubdate']:
movies.append({
'title': movie['title'],
'box_office': movie['box_info'],
'score': movie['rating']['average'],
'vote_count': movie['ratings_count']
})
movies = sorted(movies, key=lambda k: k['box_office'], reverse=True)
plt.figure(figsize=(10, 6))
plt.bar(range(len(movies)), [int(movie['box_office'].replace('万', '')) for movie in movies], tick_label=[movie['title'] for movie in movies])
plt.xticks(rotation=90)
plt.xlabel('电影')
plt.ylabel('票房(万元)')
plt.title(f'{today} 北京电影票房排行榜')
plt.show()
```