调用Python包
import matplotlib.pyplot as pltimport pandas as pdfrom matplotlib.pyplot import MultipleLocatorplt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
造数-DataFrame
df = pd.DataFrame([['','aa',200,20],['','aa',210,30],['','aa',230,70],['','aa',260,20],['','aa',270,80],['','aa',200,20],['','bb',250,25],['','bb',280,65],['','bb',290,35],['','bb',650,85],['','bb',350,95],['','bb',250,55],['','cc',300,30],['','cc',380,33],['','cc',340,70],['','cc',380,80],['','cc',390,90],['','cc',300,30],['','dd',400,40],['','dd',430,50],['','dd',420,80],['','dd',470,50],['','dd',420,70],['','dd',490,40],['','ee',550,55],['','ee',560,85],['','ee',590,55],['','ee',590,65],['','ee',550,85],['','ee',570,55],['','ff',600,60],['','ff',670,40],['','ff',660,70],['','ff',630,90],['','ff',680,80],['','ff',620,60]],columns=['报表日期','股票名称','市值','FCFF'])df['报表日期']=df['报表日期'].apply(int)print(df)
不同指标全部画在一张图上
fig, ax = plt.subplots()h,l = ax.get_legend_handles_labels()for i in df['股票名称'].unique():df[df['股票名称']==i].groupby('股票名称').plot('报表日期','市值',ax=ax,figsize=(16, 10),label='%s_市值'%i)df[df['股票名称']==i].groupby('股票名称').plot('报表日期','FCFF',ax=ax,figsize=(16, 10),label='%s_FCFF'%i,linestyle='-.')#sub_data[sub_data['股票名称']==i].groupby('股票名称').plot('报表日期','DebtRatioWithoutR&D',ax=ax,figsize=(16, 10),label='%s_D/E'%i,linestyle='-')x_major_locator=MultipleLocator(1.0)y_major_locator=MultipleLocator(50)ax=plt.gca()ax.xaxis.set_major_locator(x_major_locator)ax.yaxis.set_major_locator(y_major_locator)plt.legend(fontsize=12)plt.axis([, , 10, 700])plt.show()
效果如下:
PS:如果图例挡住折线了,调整一下图片尺寸或横纵坐标的范围即可。
或者按股票名称分别画对应指标
for i in df['股票名称'].unique():x_major_locator=MultipleLocator(1.0)y_major_locator=MultipleLocator(50)ax=plt.gca()ax.xaxis.set_major_locator(x_major_locator)ax.yaxis.set_major_locator(y_major_locator)#plt.legend(fontsize=12)plt.axis([, , 10, 700])df[df['股票名称']==i].groupby('股票名称').plot('报表日期',['市值','FCFF'],figsize=(6, 4),label=['%s_市值'%i,'%s_FCFF'%i])
效果如下(按股票名称画出多张图):
转载请附出处,谢谢。