美化Matplotlib线图

时间:2018-08-13 01:30:16

标签: python pandas dataframe matplotlib graph

我想要达到的目标是线形图及其在整个历史中的平均得分。 X轴=年,y轴=得分。

genre_list是类型类型的数组。

for genre in genre_list:
    random_color = [np.random.random_sample(), np.random.random_sample(), np.random.random_sample()]
    plt.plot('release_year', 'vote_average', 
             data=genre_df, marker='', 
             markerfacecolor=random_color, 
             markersize=1, 
             color=random_color, 
             linewidth=1, 
             label = genre)

plt.legend()
plt.figure(figsize=(5,5))

尽管我最终很难看。

enter image description here

问题1)我尝试设置图形尺寸,但似乎保持不变。我该如何配置?

问题2)如何设置线条颜色以匹配图例?

问题3)如何配置x和y轴,使其更精确? (可能与#1相同)

感谢您的各种投入,谢谢。

1 个答案:

答案 0 :(得分:0)

请考虑groupby,以按照流派拆分数据帧,然后循环遍历子集以绘制图线。就像上面的@ImportanceOfBeingErnest引用一样,请使用此SO answer以每年的间隔(按需旋转刻度)来间隔x轴:

import matplotlib.pyplot as plt
import matplotlib.ticker as plticker
...

fig, ax = plt.subplots(figsize=(12,5))

for genre, sub_df in genre_df.groupby(['genres']):
    random_color = [np.random.random_sample() for _ in range(3)]

    plt.plot('release_year', 'vote_average', 
             data = sub_df, marker = '', 
             markerfacecolor = random_color, 
             markersize = 1, 
             color = random_color, 
             linewidth = 1, 
             label = genre)

loc = plticker.MultipleLocator(base=1.0)
ax.xaxis.set_major_locator(loc)
plt.xticks(rotation=45)

plt.legend()
plt.show()
plt.clf()