Установка флага на ответ кинакуты кажется разумной, вы можете поместить слушателя на тело, чтобы вы могли проверить, не завис ли какой-либо элемент в определенный момент.
Однако, как вы хотите иметь дело с дочерними узлами? Вы должны, возможно, проверить, является ли этот элемент предком текущего зависающего элемента.
<script>
var isOver = (function() {
var overElement;
return {
// Set the "over" element
set: function(e) {
overElement = e.target || e.srcElement;
},
// Return the current "over" element
get: function() {
return overElement;
},
// Check if element is the current "over" element
check: function(element) {
return element == overElement;
},
// Check if element is, or an ancestor of, the
// current "over" element
checkAll: function(element) {
while (overElement.parentNode) {
if (element == overElement) return true;
overElement = overElement.parentNode;
}
return false;
}
};
}());
// Check every second if p0 is being hovered over
window.setInterval( function() {
var el = document.getElementById('p0');
document.getElementById('msg').innerHTML = isOver.checkAll(el);
}, 1000);
</script>
<body onmouseover="isOver.set(event);">
<div>Here is a div
<p id="p0">Here is a p in the div<span> here is a span in the p</span> foo bar </p>
</div>
<div id="msg"></div>
</body>
Вы можете попытаться сначала превратить свой список дат и времени в pandas.Series
, а затем пересчитать до часа. Нечто подобное:
import pandas as pd
import numpy as np
s = pd.Series(np.ones(len(found_time)), index=pd.DatetimeIndex(found_time))
s = s.resample('H').sum()
plt.scatter(s.index.hour, s.index.date, s=s, color='k')
# yticks
yticks = pd.date_range('2019-02-01', '2019-02-28', freq='D')
plt.yticks(yticks, [y.strftime('%m-%d') for y in yticks])
plt.ylim('2019-02-01', '2019-02-28')
# xticks
xticks = np.arange(24)
plt.xticks(xticks, ['{0:02d}:00'.format(x) for x in xticks], rotation=45, ha='right')