我是编程新手,我已经尝试了几天用不同的函数来绘制两条垂直线,它们横跨两个子图,它们共享时间x轴,但y轴完全不同,但要么这两条线没有出现在绘图上,要么整个绘图都变空了。 这些线应该代表雷暴的开始和结束,所以它们应该位于特定的时间,在这种情况下是16:00和20:30。我不得不在另外三场雷雨中重复这一点,但我连一次都做不好。 我的密码是:
ce28 = pd.read_csv('Data Source 1-06282017.efm', header=None,
parse_dates=True)
col=ce28[1]
cuentas = 120
promedios = [sum(col[i:i+cuentas])//cuentas for i in range(0,len(col),cuentas)]
proms=promedios[924:]
print(len(proms))
from datetime import datetime
from datetime import timedelta
inicio = datetime(2017,6,28,14,0,0)
fin = datetime(2017,6,28,23,0,0)
seconds = (fin - inicio).total_seconds()
delta = timedelta(minutes=1)
tiempo = []
for i in range(0, int(seconds), int(delta.total_seconds())):
tiempo.append(inicio + timedelta(seconds=i))
print(len(tiempo))
datos= pd.read_csv('28-6-2017_28-6-2017_min.txt', sep='\t', header=None,
parse_dates=True)
col1=datos[2]
col11=col1[900:]
print(len(col11))
fig1 = plt.figure(figsize=(25,8))
gs = gridspec.GridSpec(2, 1)
ax0 = plt.subplot(gs[0])
graf0 = ax0.plot(tiempo, proms,color='b')
plt.ylabel('Intensidad de E (kV/m)',fontweight='bold')
plt.grid(True)
ax1 = plt.subplot(gs[1], sharex = ax0)
graf1 = ax1.plot(tiempo, col11, color='b')
plt.xlabel('Tiempo Local',fontweight='bold')
plt.ylabel('Cuentas por minuto',fontweight='bold')
plt.grid(True)
ax1.xaxis.set_major_locator(md.MinuteLocator(byminute=[0,15,30,45],interval=1))
ax1.xaxis.set_major_formatter(md.DateFormatter('%H:%M'))
plt.ylim(1300,1450)
plt.setp(ax0.get_xticklabels(), visible=False)
plt.subplots_adjust(hspace=.0)
plt.margins(x=0)
plt.show()
我想达到的效果是这样的,我用power point画了线,很明显质量不一样:
如果您能给我任何帮助,我们将不胜感激!谢谢您。在
数据:https://www.dropbox.com/sh/cjolnsns37r8sby/AAAiijE3DWR1yR0G1qys7g47a?dl=0
像那样的东西应该可以做到
请注意,线路(普立万)的坐标指的是ax2的数据空间。在
{a1}
{cd1>主要的变化包括。我还在上面的图中为y轴添加了限制。x轴的记号标签一团糟。我希望那是因为我编造了数据,没有花时间把它们正确地计算出来。我的主要目的是建议一种获得垂直线的方法。在
主要思想是,由于
tiempo
是以日期时间为单位的,所以要绘制垂直线,它们的x坐标也必须是日期时间单位;因此,计算和使用red_ordinates
的方法。在结果图:
{a1}
这就是我最终成功的原因:
相关问题 更多 >
编程相关推荐