Plotly Express-Facetten zeigen beim Festlegen des X-Achsenbereichs und benutzerdefinierter Teilstrichbeschriftungen keinPython

Python-Programme
Anonymous
 Plotly Express-Facetten zeigen beim Festlegen des X-Achsenbereichs und benutzerdefinierter Teilstrichbeschriftungen kein

Post by Anonymous »

Ich habe einen Datenrahmen mit diesen Spalten:
  • Code: Select all

    id_pair
    (Sensorpaar)
  • Code: Select all

    rssi_mean
    (Erkennungsstärke)
  • Code: Select all

    contact_day
    (Tag der Erkennung als String, z. B. 'Montag')
  • Code: Select all

    study_week
    (Woche der Erkennung als Ganzzahl)
  • Code: Select all

    contact_time
    (datumsunabhängige Zeit, d. h. nur die Stunden, Minuten und Sekunden für diesen Tag).
Für jede mögliche Kombination von contact_day und Study_week möchte ich die Signalstärke rssi_mean gegen die contact_time für jedes Sensorpaar darstellen (

Code: Select all

id_pair
). Vorsichtsmaßnahme: Ich weiß, dass es für einige Tag-Wochen-Kombinationen überhaupt keine Daten gibt.
Im Moment verwende ich diesen Code:

Code: Select all

# convert time to total seconds on that day
df["tod_sec"] = pd.to_timedelta(df["contact_time"], errors="coerce").dt.total_seconds()

# set order of days
day_order = ["Monday","Tuesday","Wednesday","Thursday","Friday"]

# plot as line plots
fig = px.line(
df,
x="tod_sec",
y="rssi_mean",
facet_row="study_week",
facet_col="contact_day",
color="id_pair",
category_orders={"contact_day": day_order}
)

# map total seconds to strings
start = 8 * 3600
end   = 20 * 3600
tickvals = list(range(start,end + 1, 3600))
ticktext = [f"{h:02d}:00" for h in range(8, 21)]

fig.update_xaxes(
range=[start,end],           # always 08:00–20:00
tickmode="array",
tickvals=tickvals,
ticktext=ticktext
)

fig.show()
Problem: Die Facetten werden geplottet, aber die y-Achse scheint außerhalb des Bereichs zu liegen, sodass ich keine Linien sehe:
Image

Das Problem scheint mit fig.update_axes zusammenzuhängen, denn wenn ich Wenn ich diesen Teil auskommentiere, kann ich Linien sehen. Dieser Teil soll die Sekunden an diesem Tag dem für Menschen lesbaren „hh:mm“-Format zuordnen. Hier ist mein df:

Code: Select all

df = pd.DataFrame.from_dict(
{'id_pair':{0:'10-12',1:'10-12',2:'10-12',3:'10-12',4:'10-12',5:'10-13',6:'10-13',
7:'10-13',8:'10-13',9:'10-13',10:'10-14',11:'10-14',12:'10-14',
13:'10-14',14:'10-14',15:'10-15',16:'10-15',17:'10-15',18:'10-15',
19:'10-15',20:'10-16',21:'10-16',22:'10-16',23:'10-16',24:'10-16'},
'rssi_mean':{0:-75.5,1:-75.29411764705883,2:-73.53333333333333,3:-71.3103448275862,
4:-70.96551724137932,5:-78.5,6:-78.5,7:-75.0,8:-74.78571428571429,
9:-75.55555555555556,10:-68.80645161290323,11:-69.48333333333333,
12:-68.01721439749609,13:-68.70243902439024,14:-67.89010989010988,
15:-76.11111111111111,16:-73.64285714285714,17:-73.38461538461539,
18:-75.5,19:-71.0,20:-73.68531468531468,21:-74.13636363636364,
22:-74.85981308411215,23:-74.99009900990099,24:-75.47916666666667},
'contact_day':{0:'Friday',1:'Friday',2:'Friday',3:'Friday',4:'Friday',5:'Thursday',
6:'Friday',7:'Tuesday',8:'Tuesday',9:'Tuesday',10:'Tuesday',
11:'Tuesday',12:'Tuesday',13:'Tuesday',14:'Tuesday',15:'Monday',
16:'Monday',17:'Monday',18:'Monday',19:'Monday',20:'Friday',
21:'Friday',22:'Friday',23:'Friday',24:'Friday'},
'study_week':{0:3,1:3,2:3,3:3,4:3,5:4,6:4,7:8,8:8,9:8,10:4,11:4,12:4,13:4,14:4,
15:3,16:3,17:3,18:3,19:3,20:3,21:3,22:3,23:3,24:3},
'contact_time':{0:'08:55:05',1:'09:01:19',2:'09:01:22',3:'09:11:38',4:'09:11:39',
5:'13:37:59',6:'08:51:08',7:'09:20:14',8:'09:20:15',9:'09:21:56',
10:'11:03:20',11:'11:03:21',12:'11:09:16',13:'11:09:17',14:'12:00:04',
15:'10:05:53',16:'10:43:43',17:'10:43:48',18:'10:50:53',19:'10:51:14',
20:'08:47:51',21:'08:47:56',22:'10:08:32',23:'10:08:37',24:'10:21:48'}}
)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post