1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Python-matplotlib实现多条曲线画在一张图上

Python-matplotlib实现多条曲线画在一张图上

时间:2021-11-10 05:44:22

相关推荐

Python-matplotlib实现多条曲线画在一张图上

调用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])

效果如下(按股票名称画出多张图):

转载请附出处,谢谢。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。