Tôi đang sử dụng biểu đồ "Thời gian dữ liệu với khoảng thời gian không đều" của Highcharts. Như bạn đã biết khi chuột di chuyển qua các điểm của dòng, hàm định dạng chạy và hiển thị một số thông tin. Tôi muốn biết chỉ số của điểm mà con chuột di chuyển qua nó. Vì vậy, nếu di chuột qua điểm đầu tiên của dòng, chú giải công cụ hiển thị "1" và điểm thứ hai hiển thị "2", v.v. thnx.Làm cách nào để lấy chỉ mục của một điểm trong Highcharts?
Trả lời
Điều này làm việc cho tôi bằng cách sử dụng v2.2:
this.series.data.indexOf(this.point)
Làm việc cho tôi. Đơn giản! –
tuyệt vời, ngắn gọn và đơn giản !!!. mặc dù tôi không nghĩ rằng bạn cần ** this.point ** (trong ngoặc đơn), chỉ ** này ** –
Đây phải là câu trả lời được chấp nhận. Câu trả lời được chấp nhận là một hack xấu xí. –
Đây là về hacky như nó đến, và sẽ nhận được chậm như địa ngục với rất nhiều điểm, nhưng nó sẽ làm việc. Ý tưởng chung là để xem xét thông qua tất cả các điểm trong dữ liệu của series cho đến khi bạn tìm ra một phù hợp với điểm hiện tại:
tooltip: {
formatter: function() {
for(var i=0;i<this.series.data.length;i++){
var item = this.series.data[i];
if(item.x == this.x && item.y == this.y)
return 'point ' + i;
}
return 'not found'
}
}
Sống dụ: http://jsfiddle.net/Fuv4h/
Đây chính xác là những gì tôi muốn. Nhưng như bạn đã đề cập đến mã này mất rất nhiều thời gian để thực hiện đặc biệt khi dòng có đầy đủ các điểm. BTW Tôi cảm ơn bạn. – Morteza
Một cách là trước xử lý dữ liệu để chứa một thuộc tính với chỉ mục. Trong ví dụ Tuyết sâu bạn có thể làm một sự chuẩn bị như thế này:
function prepare(dataArray) {
return dataArray.map(function (item, index) {
return {x: item[0], y: item[1], myIndex: index};
});
};
để chuyển đổi hàng loạt các [x, y]
trở thành một đối tượng như { x: x, y: y, myIndex: i}
. Sau đó, nó dễ dàng để nhận thấy chỉ số trong định dạng với:
formatter: function() {
return 'point ' + this.point.myIndex;
}
Ví dụ trên jsfiddle
Mã này có vẻ nhanh hơn. Tôi thử nghiệm nó trong dự án của tôi Ngay khi có thể. Thnx eolsson. – Morteza
Có, nó sẽ nhanh hơn tìm kiếm chỉ mục, nhưng sẽ sử dụng nhiều bộ nhớ hơn. – eolsson
Wow ..Bây giờ tôi đã biết rằng tôi có thể thêm các thuộc tính khác ngoài tên, x, y, lưu ý trong mảng đối tượng. 1 cho rằng –
Đối với hồ sơ của bạn có thể làm điều đó trực tiếp trong một cách tốt đẹp
Đó là cửa hàng ở:
this.points[0].point.x
Điều này làm việc cho tôi, không chắc chắn lý do tại sao bạn đã downvoted. – MightyPork
Tôi có thể cho bạn biết chính xác lý do tại sao điều này đã được giảm giá: bởi vì nó dựa vào nội dung của X là một chỉ mục. Trong trường hợp của tôi X là một ngày, vì vậy tôi đã có ngày. Tuy nhiên bằng cách sử dụng 'seriesMapping' tôi ánh xạ cột thứ ba của CSV của tôi đến một chỉ mục thực tế và sau đó truy cập nó bằng cách sử dụng dòng này :) +1 từ tôi –
Vì dữ liệu được sắp xếp, bạn có thể sử dụng binary search.
Tìm kiếm nhị phân sẽ hoạt động tốt ngay cả đối với số điểm lớn (từ bài viết wikipedia: "Ví dụ: để tìm kiếm danh sách một triệu mục mất nhiều triệu lần lặp với tìm kiếm tuyến tính, nhưng không bao giờ nhiều hơn hai mươi lặp với tìm kiếm nhị phân "
Ví dụ:.
var bsComparator = function(a, b) {
if (a.x < b.x) { return -1; }
if (a.x > b.x) { return 1; }
return 0;
};
var binarySearch = function(series_data, point) {
var low = 0, high = series_data.length - 1,
i, comparison;
while (low <= high) {
i = Math.floor((low + high)/2);
comparison = bsComparator(series_data[i], point);
if (comparison < 0) { low = i + 1; continue; }
if (comparison > 0) { high = i - 1; continue; }
return i;
}
return null;
};
tooltip: {
formatter: function() {
var pointIndex = binarySearch(this.series.data, this.point);
return "Point index: " + pointIndex;
}
}
(chức năng binarySearch trên được lấy cảm hứng từ http://www.dweebd.com/javascript/binary-search-an-array-in-javascript/)
Sou giống như bạn chỉ cần giá trị xAxis (tức là thời gian). Sử dụng: this.xData.indexOf(point.x)
this.points sẽ được nhóm thành chuỗi lớn hơn để tìm kiếm sâu hơn thông qua các điểm [0] ... điểm [n].
Đây là tất cả những gì làm việc cho tôi trên Highstock JS v4.2.4:
var index = this.points[0].point.dataGroup.start;
- 1. Làm cách nào để lấy chỉ mục của một mục trong danh sách trong một bước?
- 2. Làm cách nào để lấy chỉ mục của một phần tử trong một mảng?
- 3. Lấy chỉ mục của một mục trong danh sách mảng;
- 4. Cách lấy id của chuỗi trong Highcharts/Highstock
- 5. Làm cách nào để lấy chỉ mục của phần tử trong javascript?
- 6. Highcharts => Lấy id của một điểm khi nhấp vào biểu đồ đường
- 7. Làm cách nào để lấy chỉ mục của một đối tượng trong một NSArray sử dụng giá trị chuỗi?
- 8. Làm cách nào để lấy chỉ mục của một đối tượng bên trong một mảng đối tượng?
- 9. Làm cách nào để đặt chỉ mục z của một điểm đánh dấu trong API Google Maps v3
- 10. Làm cách nào để lấy submap của LinkedHashMap theo chỉ mục phần tử?
- 11. Sử dụng chỉ mục để lấy một mục, Python
- 12. Làm cách nào để tìm chỉ mục của một ký tự trong một chuỗi trong C?
- 13. Lấy chỉ mục của mục hiện tại trong JCarousel
- 14. Cách lấy chỉ mục của thành phần gốc trong jQuery
- 15. Highcharts làm nổi bật một điểm trên dòng
- 16. Làm cách nào để lấy một mục từ danh sách tại một chỉ mục nhất định bằng ngôn ngữ vợt?
- 17. Thay đổi màu của điểm động trong highcharts
- 18. Làm cách nào để tạo chỉ mục DESC trong MySQL?
- 19. Cách lấy chỉ mục cuối cùng của danh sách?
- 20. lấy chỉ mục cột của một phạm vi
- 21. Làm cách nào để lấy chỉ mục từ NSIndexset vào NSArray trong ca cao?
- 22. Lấy chỉ mục của một mẫu trong một chuỗi bằng cách sử dụng regex
- 23. Làm cách nào để lấy Giá trị Enum từ chỉ mục trong Java?
- 24. Google Maps: Làm cách nào để thay đổi chỉ mục z của một Marker?
- 25. Làm cách nào để lấy phần tử con theo chỉ mục trong Jquery?
- 26. Java, Làm cách nào để lấy chỉ mục/khóa hiện tại trong vòng lặp "cho mỗi"
- 27. Làm cách nào để lấy chỉ mục hàng trong danh sách thả xuống đã chọnIndexChanged?
- 28. Cách lấy chỉ mục đúng cách từ đường dẫn chỉ mục trong UICollectionView?
- 29. Làm cách nào để di chuyển chú thích trong Highcharts?
- 30. Làm cách nào để tìm chỉ mục của một mảng có đối tượng trong Rails?
câu trả lời của Edgar dường như là tốt nhất, không cần chế biến. –