2017-11-21 24 views
-1

私はプログラミングに慣れていないので、時間軸を共有しているが完全に異なる2つのサブプロット間に2本の垂直線をプロットするy軸に表示されますが、線がプロットに表示されないか、プロット全体が空になります。 行は雷雨の始まりと終わりを表すはずなので、特定の時刻(この場合は16:00と20:30)に配置する必要があります。私は3つの他の雷雨のためにこれを繰り返さなければならず、私は1つの権利を得ることさえできません。 同じ時間軸を持つ2つのサブプロット間に縦線をプロットする

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() 

そして、それはこの美しいグラフ与える:: 私が持っているコードはこれです、私が達成したい何 beauty

を、このようなものですが、私はパワーポイントでラインを描き、明らかに品質のISN同じ: desired

あなたが私に与えることができる助けが本当にありがとう!ありがとうございました。

では、Data:そのようなhttps://www.dropbox.com/sh/cjolnsns37r8sby/AAAiijE3DWR1yR0G1qys7g47a?dl=0

答えて

0

これは最終的に私のために働いていたものです:

ax0.axvline(pd.to_datetime('2017-06-28-00:00:00'), color='k', linestyle='-.') 
0

何かがそれをライン(ポリオン)の座標がAX2のデータ空間を参照すること

f = plt.figure() 
ax1 = f.add_subplot(211) 
ax2 = f.add_subplot(212) 

rect = patches.Rectangle((10,2),3,1,linewidth=1,edgecolor='r',facecolor='none') 

f.patches.extend([patches.Polygon([(0.4,0.1),(0.4,1.5)], 
            fill=True, color='g', alpha=0.5, zorder=1000, 
            transform=ax2.transData, 
            figure=f)]) 

注意を行う必要があります。

enter image description here

+0

ありがとうございます!私はこれを実行することができませんでした、それは '無効な構文'): –

+0

私はあなたの側にコピーして貼り付けていると思います。コードはOKです。 –

0

主な変更点はred_ordinatesを伴います。私はまた、上のプロットのy軸に制限を加えました。 x軸の目盛りのラベルは混乱しています。私はデータを作り上げ、適切に処理する時間を取らなかったので、それが願っています。私の主な目的は、縦線を得る方法を提案することでした。

主な考え方は、tiempoは日時単位であるため、縦線をプロットするには、そのx座標も日時単位である必要があります。したがって、方法はred_ordinatesが計算され使用されます。

from matplotlib import pyplot as plt 
from matplotlib import gridspec 
import matplotlib.dates as md 
import numpy as np 
import random 

tiempo = np.arange(771).astype('<i8').view('M8[m]').tolist() 
proms = [random.gauss(0,1) for _ in range(len(tiempo))] 
col11 = [1380+5*random.gauss(0,1) for _ in range(len(tiempo))] 

red_ordinates = np.linspace(10,50,2).astype('<i8').view('M8[m]').tolist() 

fig1 = plt.figure(figsize=(25,8)) 
gs = gridspec.GridSpec(2, 1) 

ax0 = plt.subplot(gs[0]) 
graf0 = ax0.plot(tiempo, proms,color='b') 

ax0.plot([red_ordinates[0], red_ordinates[0]], [-3.5, 3.5], color='r') 
ax0.plot([red_ordinates[1], red_ordinates[1]], [-3.5, 3.5], color='r') 

plt.ylim(-3.5, 3.5) 
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') 

ax1.plot([red_ordinates[0], red_ordinates[0]], [1300, 1450], color='r') 
ax1.plot([red_ordinates[1], red_ordinates[1]], [1300, 1450], color='r') 

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() 

結果のプロットは:

plot

+0

ありがとうございました!私はこれを試して、それはダニに関するエラーを示して、それはダニの数が許可されている最大値を超えていると言います、なぜ私は理解していませんが、私は努力し続けるつもりです。 –

+0

データをどこかに投稿し、あなたの質問に完全なコードを含めることは可能でしょうか? –

+0

はい、私はそうしようとしましょう!ありがとう –

関連する問題