cuốn sách gpt4 ai đã làm

时间/日期轴的漂亮图形标签的算法?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 02:17:36 31 4
mua khóa gpt4 Nike

Tôi đang tìm thuật toán "số đẹp" để xác định nhãn trên trục giá trị ngày/giờ. tôi quen với Thuật toán số đẹp của Paul Heckbert .

Tôi có biểu đồ hiển thị thời gian/ngày trên trục X và người dùng có thể phóng to và xem phạm vi thời gian nhỏ hơn. Tôi đang tìm một thuật toán để chọn ngày thích hợp để hiển thị trên thang đo.

Ví dụ:

  • Nhìn về phía trước khoảng một ngày: 1/1 12:00, 1/1 4:00, 1/1 8:00...
  • Hướng tới tuần: 1/1, 1/2, 1/3...
  • Xem tháng: 09/1, 09/02, 09/03...

Các dấu tích nhãn đẹp không cần phải tương ứng với điểm nhìn thấy đầu tiên mà phải ở gần điểm đó.

Có ai quen thuộc với thuật toán như vậy không?

câu trả lời hay nhất

Bài viết Pretty Numbers mà bạn liên kết để đề cập đến điều này

các số đẹp nhất trong hệ thập phân là 1, 2, 5 và tất cả các bội số lũy thừa 10 của các số này

Vì vậy, tôi nghĩ để làm điều gì đó tương tự với ngày/giờ, bạn cần bắt đầu bằng cách giải mã mã tương tự. Vì vậy, hãy xem xét những lợi thế của từng loại khoảng thời gian:

  • Nếu bạn muốn hiển thị giây hoặc phút, hãy sử dụng 1, 2, 3, 5, 10, 15, 30 (tôi bỏ qua 6, 12, 15, 20 vì họ "cảm thấy" sai).
  • Nếu bạn muốn hiển thị giờ, hãy sử dụng 1, 2, 3, 4, 6, 8, 12
  • Sử dụng vào ngày 1, 2 và 7
  • Các tuần sử dụng 1, 2, 4 (13 và 26 phù hợp với mô hình nhưng đối với tôi trông quá kỳ lạ)
  • Sử dụng 1, 2, 3, 4, 6 trong tháng
  • Quyền hạn của 1, 2, 5 và 10 đã được sử dụng trong nhiều năm qua

Bây giờ rõ ràng là khi bạn đọc khối lượng lớn hơn, điều này bắt đầu bị hỏng. Tất nhiên, bạn không muốn hiển thị số phút có giá trị trong 5 tuần, ngay cả trong khoảng thời gian "đẹp" là 30 phút hoặc lâu hơn. Mặt khác, bạn không muốn hiển thị khoảng thời gian 1 ngày khi bạn chỉ có 48 giờ. Bí quyết, như bạn đã chỉ ra, là tìm đúng điểm chuyển tiếp.

Theo trực giác, tôi cho rằng điểm giao nhau hợp lý là khoảng gấp đôi khoảng thời gian tiếp theo. Điều này sẽ cung cấp cho bạn những thông tin sau (số khoảng thời gian tối thiểu và tối đa được hiển thị sau đó)

  • Nếu thời gian của bạn dưới 2 phút, hãy sử dụng giây (1-120)
  • Nếu thời gian của bạn dưới 2 giờ, hãy sử dụng số phút (2-120)
  • Nếu bạn có ít hơn 2 ngày, hãy sử dụng giờ (2-48)
  • Nếu bạn có ít hơn 2 tuần, hãy sử dụng ngày (2-14)
  • Nếu kỳ kinh của bạn dưới 2 tháng (2-8/9), hãy sử dụng số tuần
  • Nếu bạn đã làm việc dưới 2 năm (2-24), hãy sử dụng số tháng
  • Nếu không, hãy sử dụng năm (mặc dù nếu phạm vi của bạn có thể dài như vậy, bạn có thể tiếp tục với hàng thập kỷ, thế kỷ, v.v.)

Thật không may, các khoảng thời gian không nhất quán của chúng tôi có nghĩa là bạn sẽ gặp phải một số trường hợp trong đó bạn có thể có hơn 100 khoảng thời gian và các trường hợp khác mà bạn chỉ có nhiều nhất là 8 hoặc 9 khoảng thời gian. Có nhiều nhất nhiều hơn 10-15 khoảng (hoặc ít hơn 5). Ngoài ra, bạn có thể phá vỡ định nghĩa nghiêm ngặt về gấp 2 khoảng thời gian lớn nhất tiếp theo nếu bạn cho rằng việc theo dõi khoảng thời gian đó là dễ dàng. Ví dụ: bạn có thể sử dụng giờ tối đa 3 ngày (72 giờ) và tuần tối đa 4 tháng. Một số thử nghiệm và lỗi có thể được yêu cầu.

Vì vậy, hãy quay lại và chọn loại khoảng dựa trên kích thước phạm vi của bạn, sau đó chọn kích thước khoảng bằng cách chọn một số "đẹp", số này sẽ để lại cho bạn 5 đến khoảng 15 tích tắc. Ngoài ra, nếu bạn biết và/hoặc có thể kiểm soát số lượng pixel thực tế giữa các dấu tích, bạn có thể đặt giới hạn trên và dưới cho số lượng pixel có thể chấp nhận được giữa các dấu tích (nếu chúng cách nhau quá xa, biểu đồ có thể khó đọc , nhưng nếu Quá nhiều tỷ lệ thì biểu đồ sẽ trở nên khó hiểu và các nhãn của bạn có thể chồng lên nhau).

Thuật toán cho nhãn đồ họa đẹp trên trục thời gian/ngày? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/1419194/

31 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress