a而b對于日期時間的索引A Values和B Values分別。的大小A Values大于B Values我想重現將它們放置在同一圖形上的代碼的大小。我如何才能撰寫一個代碼,它在同一圖形上繪制 2 個不同長度的 numpy 陣列?
import pandas as pd
import numpy as np
import datetime
a = np.array(['2017-09-15 07:11:00', '2017-09-15 12:11:00', '2017-12-22 06:35:00'], dtype='datetime64[ns]')
b = np.array(['2017-09-10 02:25:00', '2017-12-11 03:11:00'], dtype='datetime64[ns]')
graph= pd.DataFrame({
'A Values': np.array([11,-3,4]),
'B Values': np.array([2,4])
}, index= [a,b]).plot.line()
錯誤代碼:
ValueError: all arrays must be same length
uj5u.com熱心網友回復:
您可以將陣列填充到相同大小,并將小陣列填充為零或無:使用此代碼段來制作它:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import datetime
a = np.array(['2017-09-15 07:11:00', '2017-09-15 12:11:00', '2017-12-22 06:35:00'], dtype='datetime64[ns]')
b = np.array(['2017-09-10 02:25:00', '2017-12-11 03:11:00'], dtype='datetime64[ns]')
s1=[11,-3,4]
s2=[2,4]
m = max(len(s1),len(s2))
a1=[None] * m
a2=[None] * m
ax1=[None] * m
ax2=[None] * m
for i in range(len(s1)):
a1[i] = s1[i]
ax1[i]=a[i]
for i in range(len(s2)):
a2[i] = s2[i]
ax2[i]=b[i]
graph= pd.DataFrame({
'A Values': np.array(a1),
'B Values': np.array(a2)
}, index= [ax1,ax2]).plot.line()
plt.xticks(rotation=0)
plt.tick_params(axis='both', which='major', labelsize=5)
#labelsize=5 instead of labelsize=10
plt.show()
輸出:

希望對你有幫助
uj5u.com熱心網友回復:
只需捕獲由 matplotlib 為第一個繪圖生成的軸物件,并使用它來繪制第二個系列:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
a = np.array(['2017-09-15 07:11:00', '2017-09-15 12:11:00', '2017-12-22 06:35:00'], dtype='datetime64[ns]')
b = np.array(['2017-09-10 02:25:00', '2017-12-11 03:11:00'], dtype='datetime64[ns]')
ax1 = pd.DataFrame({'A Values': np.array([11,-3,4])}, index= a).plot.line()
pd.DataFrame({'B Values': np.array([2,4])}, index= b).plot.line(ax=ax1)
plt.show()
示例輸出:

如果您想知道matplotlib與您的問題有什么關系 - 除非另有說明,pandas 將資料提供給 matplotlib 以生成繪圖。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/402822.html
標籤:
上一篇:交換不同大小向量中的某些值
