2010-11-18 41 views
12

Trong trường hợp ai đó không biết: A cartogram là một loại bản đồ nơi một số thuộc tính số thuộc quốc gia/khu vực chia tỷ lệ các khu vực tương ứng sao cho mật độ của thuộc tính đó là (gần). Một ví dụ làVẽ đồ họa với Matplotlib?

Example cartogram

từ worldmapper.org. Trong ví dụ này, các quốc gia được thu nhỏ theo dân số của chúng, dẫn đến mật độ dân số gần như không đổi.

Không cần phải nói, điều này thực sự tuyệt vời. Có ai biết về một thư viện dựa trên Matplotlib để vẽ các bản đồ như vậy không? Phương pháp được sử dụng tại worldmapper.org được mô tả trong (1), do đó, nó sẽ làm tôi ngạc nhiên nếu chưa có ai thực hiện điều này ...

Tôi cũng quan tâm đến việc nghe về các thư viện biểu đồ khác, ngay cả khi chúng không làm cho Matplotlib.

(1) Michael T. Gastner và M. E. J. Newman, Phương pháp dựa trên khuếch tán để tạo bản đồ cân bằng tỷ trọng, Proc. Nat. Acad. Sci. Hoa Kỳ, 101, 7499-7504 (2004). Có sẵn tại arXiv.

+0

Có một ví dụ hoạt hình thú vị [ở đây] (http://metrocosm.com/the-housing-value-of-every-county-in-the-us/), với một số (nhưng có thể không phải tất cả) chi tiết về cách nó được thực hiện. – naught101

Trả lời

4

this, mặc dù nó dựa và một thuật toán khác (và mặc dù trên trang web ESRI, nó không yêu cầu ArcGIS). Tất nhiên, một khi bạn có cartogram bạn có thể vẽ nó trong matplotlib.

+0

Rực rỡ, cảm ơn! Tôi đoán tôi đã bối rối khi tôi nói "với Matplotlib." Tôi đoán tôi đang nghĩ về những gì mà người Matplotlib gọi là bộ công cụ, chẳng hạn như bộ công cụ Bản đồ, nhưng hoàn toàn không có lý do tại sao tôi thực sự muốn điều đó. Giải pháp của bạn chắc chắn sẽ đủ :-) – gspr

0

Here là một plugin Javascript để tạo biểu đồ bằng D3. Đó là một giải pháp tốt, đơn giản nếu bạn không quá lo ngại về các vùng được định kích thước chính xác. Nếu độ chính xác là quan trọng, có các tùy chọn khác có sẵn cho phép bạn tự do hơn để chơi với các tham số của thuật toán để có được kết quả chính xác hơn.

Dưới đây là hai chương trình độc lập tuyệt vời, tôi biết:

Scapetoad là rất dễ sử dụng. Chỉ cần cung cấp cho nó một shapefile, cho nó biết thuộc tính nào để sử dụng cho việc mở rộng quy mô, và thiết lập một vài tham số chính xác. Nếu có bất kỳ nghi ngờ nào, this post mô tả quy trình.

Carto3F phức tạp hơn và cho phép độ chính xác cao hơn, mặc dù nó phức tạp hơn một chút để tìm ra - nhiều cài đặt tham số mà không cần nhiều tài liệu giải thích chúng.

Ngoài ra còn có QGIS cartogram plugin, được viết bằng Python. Mặc dù tôi không thể làm cho nó hoạt động được, nên không thể bình luận về điều đó.

0

Tóm lại, không. Nhưng Newman có một chút thực hiện tuyệt vời của phương pháp của ông và Gastner on his website. Cài đặt nó rất dễ dàng và nó hoạt động từ dòng lệnh. Dưới đây là ví dụ về quy trình làm việc sử dụng phần mềm này có hiệu quả đối với tôi.

  1. Tính toán lưới các ước tính mật độ trên một số khu vực, ví dụ: bằng Python. Lưu nó dưới dạng ma trận số.
  2. Chạy chương trình cart với ma trận mật độ của bạn làm đầu vào từ dòng lệnh hoặc từ tiến trình con trong Python.
  3. Chương trình trả về danh sách các tọa độ mới cho mỗi điểm lưới.
  4. Đặt các điểm shapefile của bạn qua chương trình interp và đưa vào shapefile mới để có được bản đồ được chuyển đổi.

Có hướng dẫn tốt trên trang chính.

Các vấn đề liên quan