python matplotlib作图,需添加副坐标轴,我按网上方法试了下,发现主、副坐标轴对不上
数据在这里下载:
https://pan.baidu.com/s/1d1QnnypYb70pnbxq0zM17g
密码:wwww
#导入库
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import datetime
#import os
plt.rcParams['font.sans-serif'] = ['SimHei']#解决中文显示为方框的问题
plt.rcParams['axes.unicode_minus'] = False
#读取数据
data=pd.read_csv('data.csv')
timelist=data[['start-time','end-time']].values.tolist()
states=data[['状态']].values.tolist()
xlabels=data[['start-time']].values.tolist()
ylabels=data[['项目']].values.tolist()
# work
xtimes=[0]
ystates=[0]
location=0
plt.figure()
plt.figure(num=3, figsize=(9, 2)) # figsize的设置长和宽
for i in range(len(timelist)):
Start=timelist[i][0]
Finish=timelist[i][1]
startTime = datetime.datetime.strptime(Start, "%Y-%m-%d")
finishTime = datetime.datetime.strptime(Finish, "%Y-%m-%d")
day = (finishTime-startTime).days
# plt.bar(40,10,label=xlabels[i],color='g')
plt.axhline(y=i+0.5, color='k', linestyle='-',alpha= 0.5,linewidth=0.8)
plt.barh(i,day,0.5,location,alpha=(5+i)/10,color = 'g', align="center") #y值,宽度,高度,起始x
plt.text(location+1,i+0.52,states[i], size = 10, alpha = 1)
plt.text(location+1,i-0.2,states[i], size = 10, alpha = 1)
plt.xlabel(u"时间")
plt.ylabel(u"软件工程阶段")
location+=day
xtimes.append(location)
ystates.append(i+1)
plt.xticks(xtimes, xlabels, rotation='horizontal')
plt.yticks(ystates, ylabels, rotation='horizontal')
plt.twinx()
plt.yticks(ystates, ylabels, rotation='horizontal') #相同的y刻度,为何对不上??
plt.title(u'甘特图')
# plt.grid(True)
plt.savefig('甘特图.png', dpi=300, format='png',bbox_inches="tight")
plt.show()