# -*- coding: utf-8 -*-
"""
plt.legend()不能正常显示图例的解决方案
情况1:只显示图例的首字母
对策:将label参数放在plot()中
情况2:多个同类型图例只显示第一个或只显示图例框格
对策:如下代码所示,在L1、L2后面要加英文逗号
情况3:多个不同类型的图例只显示第一个或显示图例框格
对策:如下代码所示,在L1后面要加英文逗号,但在L2后面不要加英文逗号
从上述情况看,matplotlib.pyplot还有改进空间:
如果不需在L1、L2后面手动添加英文逗号就能自动识别并正常显示,那样会更好
@author: 向上的天天
"""
import matplotlib.pyplot as plt
year = [i for i in range(2010,2016)]
price = [9800,9600,10000,9700,9900,9700]
sale = [48,55,53,56,46,65]
#下面两行设置两幅子图共用同一个X轴
fig,ax = plt.subplots(1, 1)
ax_sub = ax.twinx()
# L1, = ax.plot(year, price, '>-', label = 'price', color = 'blue') #折线图,L1、L2后面要加英文逗号
# L2, = ax_sub.plot(year, sale, '-.', label = 'sale', color = 'green') #折线图
L1, = ax.plot(year, price, '-.', label = 'price', color = 'red') #折线图,L1、L2后面要加英文逗号
L2 = ax_sub.bar(year, sale, label = 'sale', color = 'pink', alpha = 0.5) #条形图,L2后面不要加英文逗号
plt.legend(handles=[L1, L2], labels=['price', 'sale'], loc = 0, fontsize = 10) #显示图例
ax.set_xlabel('Year')
ax.set_ylabel('Price')
ax_sub.set_ylabel('Sale')
ax.set_title('Display')
plt.show() #在Spyder中本行可省略