引入依赖
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
显示中文和负号
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
数据处理
df = pd.read_excel('movie_box_office.xlsx')
df_a = df[df['电影名称'] == '小美人鱼之大海怪传说']
df_a = df_a[['日期', '当前票房']]
df_a['当前票房'] = df_a['当前票房'].div(10000)
df_a = df_a.sort_values('日期', ascending=False)
df_b = df[df['电影名称'] == '威尼斯惊魂夜']
df_b = df_b[['日期', '当前票房']]
df_b['当前票房'] = df_b['当前票房'].div(10000)
df_b = df_b.sort_values('日期', ascending=False)
df_c = df[df['电影名称'] == '青木劫']
df_c = df_c[['日期', '当前票房']]
df_c['当前票房'] = df_c['当前票房'].div(10000)
df_c = df_c.sort_values('日期', ascending=False)
x = ['第' + str(i + 1) + '天' for i in range(20)]
绘制折线图
plt.figure(figsize=(10, 6))
plt.plot(x, df_a[0:20]['当前票房'], '-', c='r', label='小美人鱼之大海怪传说')
plt.plot(x, df_b[0:20]['当前票房'], '-', c='y', label='威尼斯惊魂夜')
plt.plot(x, df_c[0:20]['当前票房'], '-', c='g', label='青木劫')
plt.ylabel('单位(万元)')
plt.title('小美人鱼值大海怪传说、威尼斯惊魂夜、青木劫前20日票房走势')
plt.xticks(rotation=45)
plt.annotate('最高点:' + str(round(df_a[0:20]['当前票房'].max(), 2)) + '万元',
xy=(9, df_a[0:20]['当前票房'].max()),
xytext=(9 + 1, df_a[0:20]['当前票房'].max()),
arrowprops=dict(arrowstyle='->')
)
plt.annotate('最高点:' + str(round(df_b[0:20]['当前票房'].max(), 2)) + '万元',
xy=(10, df_b[0:20]['当前票房'].max()),
xytext=(10 + 1, df_b[0:20]['当前票房'].max()),
arrowprops=dict(arrowstyle='->')
)
plt.annotate('最高点:' + str(round(df_c[0:20]['当前票房'].max(), 2)) + '万元',
xy=(9, df_c[0:20]['当前票房'].max()),
xytext=(9 + 1, df_c[0:20]['当前票房'].max()),
arrowprops=dict(arrowstyle='->')
)
plt.legend(loc='center right')
plt.yticks(np.arange(0, 80, 20))
plt.gca().spines['top'].set_color('none')
plt.gca().spines['right'].set_color('none')
plt.show()
效果图
