Я пытаюсь отобразить данные с разными частотами, некоторые из моих данных - 55H, а другой набор данных - 4 Гц.
Пока у меня есть все значения, построенные на одной шкале времени, я сейчас просто пытаюсь установить свои xticks, у меня не было проблем с yticks, однако, когда я пытаюсь установить xticks, это вызывает графиксожмите вверх, см. изображение.
Код ниже - это функция, которую я использовал для построения графика набора данных, который создал график под этим.Как вы можете видеть зеленую линию, мои цели взгляда были раздавлены, если я закомментировал
host.set_xticks (xlables)
Я получил желаемый график, но безправильные галочки.
Не могу понять, в чем дело, и, честно говоря, код довольно грязный, так как я изо всех сил пытался отобразить данные различной длины.
Помогите высоко цениться
import sys
import csv
import os
import matplotlib.pyplot as plt
import matplotlib.ticker as plticker
from math import isclose
import matplotlib.transforms as mtransforms
from functools import reduce
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
import matplotlib.pyplot as plticker
# Function for location detection
# You will need to merge data what ever sensor you are using with the GPS data on timestamp
# Pass your GPS start and end lat and lon and the merged dataframe to the function
def GPS_find_loc(gps_startLat, gps_startLon, gps_endLat, gps_endLon, df):
locList = []
#dfnew = df[['latatude', 'longatude']].copy()
#dfnew = dfnew.dropna().reset_index(drop=True)
for index, row in df.iterrows():
if isclose(row['latitude'], gps_startLat, abs_tol=1e-4) == True and isclose(row['longitude'], gps_startLon, abs_tol=1e-4) == True:
locList.append(index)
elif isclose(row['latitude'], gps_endLat, abs_tol=1e-4) == True and isclose(row['longitude'], gps_endLon, abs_tol=1e-4) == True:
locList.append(index)
Start = locList[0]
End = locList[-1]
return Start, End
def plotGaze(Loc, lat, lon, Par, location):
time = df.timestamp[lon] - df.timestamp[lat]
fig = plt.figure(figsize=(15,7.5))
host = fig.add_subplot(111)
par1 = host.twinx()
par2 = host.twinx()
par3 = host.twinx()
host.set_xlabel("Time (s)")
host.set_ylabel("Gaze targets")
par1.set_ylabel("Pressure on Acc (bar)")
par2.set_ylabel("Pressure (bar)")
par3.set_ylabel("HR")
color1 = "g"
color2 = "b"
color3 = "y"
color4 = "r"
x1 = np.linspace(0, 1, len(df.objectName[lat:lon].dropna().reset_index(drop=True)))
x3 = np.linspace(0, 1, len(df.HR[lat:lon].dropna().reset_index(drop=True)))
mean = np.mean(df.HR.dropna().reset_index(drop=True))
p1, = host.plot(x1, df.objectName[lat:lon].dropna().reset_index(drop=True), label='Object', color='g', linewidth=0.5)
p2, = par1.plot(x1, df.pressureOnAccPeddle[lat:lon].dropna().reset_index(drop=True).rolling(13).median(), label='Acc pedel', color='b', linewidth=0.5)
p3, = par2.plot(x1, df.pressure[lat:lon].dropna().reset_index(drop=True).rolling(13).median(), label='Acc pedel', color='y', linewidth=0.5)
# df.HR is at a lower frequency
p4, = par3.plot(x3, df.HR[lat:lon].dropna().reset_index(drop=True), label='Acc pedel', color='r', linewidth=0.5)
par3.axhline(y=mean, label='Mean= ' + format(round(mean, 1)), color='r', linestyle='--', linewidth=0.5)
lns = [p1, p2, p3, p4]
# Setting outer spines
par2.spines['right'].set_position(('outward', 90))
par3.spines['right'].set_position(('outward', 40))
xlables = np.arange(0, time)
host.set_xticks(xlables)
host.set_xticklabels(xlables, fontsize='small')
labels = [item.get_text() for item in host.get_yticklabels()]
labels = ('IVI','Cluster','RearViewMirror','Others','RightSideViewMirror','Right_Others','Windshield','FrontalArea','Left_Others','LeftSideViewMirror')
host.set_yticklabels(labels, color=color1,fontsize='small')
#host.set_yticklabels(np.arange(8),('IVI','Cluster','RearViewMirror','Others','RightSideViewMirror','Right_Others','Windshield','FrontalArea','Left_Others','LeftSideViewMirror'))
#host_subplot.yticks(np.arange(10),('IVI','Cluster','RearViewMirror','Others','RightSideViewMirror','Right_Others','Windshield','FrontalArea','Left_Others','LeftSideViewMirror'))
host.yaxis.label.set_color(p1.get_color())
par1.yaxis.label.set_color(p2.get_color())
par2.yaxis.label.set_color(p3.get_color())
par3.yaxis.label.set_color(p4.get_color())
fig.tight_layout()
file_name_HR = "stackoverflowexample.csv"
pd.set_option('display.float_format', lambda x: '%.6f' % x)
df = pd.read_csv(file_name_HR, sep=',', header=0)
LatStartBrown, LonStartBrown = 53.279644, -9.069730
bExitlat, bExitlon = 53.278779, -9.069806
BrownStart, BrownEnd = GPS_find_loc(LatStartBrown, LonStartBrown, bExitlat, bExitlon, df)
df[BrownStart:BrownEnd].to_csv("C:/PhD Tests/Results/stackoverflowexample.csv")
plotGaze("_Brown.png", BrownStart, BrownEnd, Par, "Brown")
Моя репутация недостаточно высока, чтобы опубликовать изображение, но вы можете посмотреть ниже
Пожалуйста, найдите данные ниже https://drive.google.com/open?id=1zdayM5JWLLYLA_bokaWw8EVLzDRFlQ21
https://i.imgur.com/93ePMWs.png