解决 matplotlib 图例重复的问题

如我们所知,matplotlib是一个Python的绘图库,它可以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形

通过 Matplotlib,我们可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

matplotlib 试图让简单的事情变得更加简单。

今天我在做练习,用pandas分析一个电影数据,我需要用到matplotlib画图,但是画图的时候出现了图例重复的问题,简单察看代码,

好像没有错误。一行一行的调试终于还是让我抓到了他的小尾巴。废话不多说我们,看图说话,边看边聊:

如下是出现问题的代码:

 1 import pandas as pd
 2 import numpy as np
 3 from matplotlib import pyplot as plt
 4 from matplotlib import font_manager
 5 my_font = font_manager.FontProperties(fname="C:/Windows/Fonts/simsun.ttc",size=16)
 6 df = pd.read_csv("./movie_metadata.csv")
 7 df = df.dropna(how="any")
 8 df.shape
 9 df1 = df[df["color"]=="Color"]
10 df1 = df1[df1["country"] == "USA"]
11 df_count=df1.groupby(["title_year"]).count()
12 x = df_count.index.tolist()
13 y = df_count.values
14 x_labels = ("{}".format(i) for i in range(1927,2020,5))
15 y_labels = ("{}".format(i) for i in range(1,152,20))
16 plt.figure(figsize=(20,8))
17 plt.grid(alpha=0.6)
18 plt.xticks(range(1927,2020,5),x_labels,fontproperties=my_font,rotation = 45)
19 plt.yticks(range(0,152,20),y_labels,fontproperties=my_font,rotation=45)
20 plt.ylabel("单位(部)",fontproperties=my_font)
21 plt.xlabel("单位(年)",fontproperties=my_font)
22 plt.title("1927-2017美国彩色电影的产出数量走势",fontproperties=my_font)
24 plt.plot(x,y,label="每年数量",color="red")
25 plt.legend(prop=my_font,loc = "upper left")
26 plt.show()

 

 

生成的图表如下:

生成图表的时候我表示很不沉着,毕竟图例这东西又不能升值(为啥它能自动生殖),其实只给我一个就好。

既然出问题了,那我们就找出问题,然后产生抗体......

 

病原体如下:

 

 

 

我们需要修改一下这个 y 轴的代码就可以简单解决这个重复图例的问题。

 

如下是抗体:

 

运行后的效果:

很显然问题就是 df_count 是一个DataFrame,我们需要获取其中一个Series,这样就能完美解决图例重复的问题。

否则憨厚的matplotlib会用优秀到帮你介绍一下表格的宽度。

那么问题来了,请问这个正在分析的数据里有多少个列?

posted @ 2020-04-27 16:50  vea_chong  阅读(4253)  评论(0)    收藏  举报