Контекст:
Мой код (цель) объяснил:
- Если из списка 'listCoords' значения из часового столбца находятся между 1 и 5
- И из столбца угроз значение равно «3». -> Вывести цвет «красный».
- ELSE, вывод 'np.append (np.insert (listCoords.index.hour, 0, 0), 23)' (который является списком массивов количества частот наблюдения в час).
- np.append (np.insert (listCoords.index.hour, 0, 0), 23) -> затем рассматривается моим цветовым диапазоном, и каждая точка получает цвет не «красный», а скорее получает цвет, который я указал в часовом диапазоне.
Код работает, если он у меня вот так :
color=np.append(np.insert(listCoords.index.hour, 0, 0), 23)),
Я хочу указать из которые перечисляют точки, которые соответствуют моим объясненным двум условиям, и отмечают их красный .
Код также работает, если я выполняю :
color=np.where(((listCoords.index.hour >= 1) & (listCoords.index.hour < 5)) & (listCoords['Threat'] == '3'), 'red', 'blue'),
Но я не хочу, чтобы общие графики были голубыми, я хочу, чтобы они получили цвет, соответствующий часу, в который они были обнаружены.
мой фрагмент кода с отступом: :
color=np.where(((listCoords.index.hour >= 1) & (listCoords.index.hour < 5)) & (listCoords['Threat'] == '3'), 'red', np.append(np.insert(listCoords.index.hour, 0, 0), 23)),
Но выводится сообщение об ошибке: - Я не понимаю это сообщение или как его решить.
Traceback (most recent call last):
File "/Users/Me/Desktop/DSP_Frontend/app.py", line 509, in update_graph
color=np.where(((listCoords.index.hour >= 1) & (listCoords.index.hour < 5)) & (listCoords['Threat'] == '3'), 'red', np.append(np.insert(listCoords.index.hour, 0, 0), 23)), #
File "<__array_function__ internals>", line 6, in where
ValueError: operands could not be broadcast together with shapes (241,) () (243,)
Мой вопрос : Как я могу решить эту проблему?
мой общий контекст кода :
return go.Figure(
data=[
# Data for all observations based on date and time
Scattermapbox(
lat=listCoords["Lat"],
lon=listCoords["Lon"],
mode="markers",
hoverinfo="text + lat + lon",
text=np.append(np.insert(listCoords.index.hour, 0, 0), 23), #listCoords.index.hour,
marker=dict(
showscale=True,
# the color is decided by the time of detection.
# color=np.append(np.insert(listCoords.index.hour, 0, 0), 23),
color=np.where(((listCoords.index.hour >= 1) & (listCoords.index.hour < 5)) & (listCoords['Threat'] == '3'), 'red', 'blue'), #
opacity=np.where(((listCoords.index.hour >= 1) & (listCoords.index.hour < 5)) & (listCoords['Threat'] == '3'), 0.1, 0.6),
size=np.where(((listCoords.index.hour >= 1) & (listCoords.index.hour < 5)) & (listCoords['Threat'] == '3'), 80, 7),
colorscale=[
[0, "#F4EC15"],
[0.04167, "#DAF017"],
[0.0833, "#BBEC19"],
[0.125, "#9DE81B"],
[0.1667, "#80E41D"],
[0.2083, "#66E01F"],
[0.25, "#4CDC20"],
[0.292, "#34D822"],
[0.333, "#24D249"],
[0.375, "#25D042"],
[0.4167, "#26CC58"],
[0.4583, "#28C86D"],
[0.50, "#29C481"],
[0.54167, "#2AC093"],
[0.5833, "#2BBCA4"],
[1.0, "#613099"],
],
colorbar=dict(
title="Time of<br>Day",
x=0.93,
xpad=0,
nticks=24,
tickfont=dict(color="#d8d8d8"),
titlefont=dict(color="#d8d8d8"),
thicknessmode="pixels",
),
),
),
------------------- --EDIT 1 ---------------------
Я добавил следующую строку в мой код для проверки форм:
shape1 = (listCoords.index.hour >= 1) & (listCoords.index.hour < 5)
shape2 = (listCoords['Threat'] == '3')
shape3 = np.append(np.insert(listCoords.index.hour, 0, 0), 23)
print('shape 1: ', shape1, ' shape 2: ', shape2, ' shape 3: ', shape3)
Это приводит к следующему:
shape 1: [ True True True True True True True True True True True True
True True True True True False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False]
shape 2: Date/Time
2019-06-02 04:00:00 False
2019-06-02 04:05:00 False
2019-06-02 04:10:00 False
2019-06-02 04:15:00 False
2019-06-02 04:20:00 False
...
2019-06-02 16:25:00 False
2019-06-02 16:30:00 False
2019-06-02 16:35:00 False
2019-06-02 16:40:00 False
2019-06-02 16:45:00 False
Name: Threat, Length: 241, dtype: bool
shape 3: [ 0 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7
7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8
8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 12 12 12
12 12 12 12 12 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
13 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15
15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 16 16 16 16 16 16 16 16
16 16 23]
Таким образом, очевидно, существует существенная разница между формами (241,) и (243,)