Làm thế nào để tạo một huyền thoại biểu đồ trong nhà soạn nhạc in QGIS?


14

Tôi đã tìm thấy bài đăng trên blog này trong khi tìm cách để tự động xây dựng biểu đồ (biểu đồ) trong trình soạn thảo in.

Tính năng tôi muốn sao chép từ blog là vẽ các hình chữ nhật tĩnh trong trình soạn thảo in qgis và sau đó định cỡ chúng dựa trên giá trị trường trong trường hợp này dưới dạng các thanh trên biểu đồ.

Do đó tạo ra một huyền thoại / biểu đồ

Tôi có thể làm theo hướng dẫn này nhưng tôi chỉ tò mò nếu a) có một cách dễ dàng hơn ngoài việc xây dựng biểu đồ tôi cần trong matplotlib và nhập hình ảnh hoặc b) chức năng này sẽ được tích hợp vào qgis trong các phiên bản tương lai.

nhập mô tả hình ảnh ở đây

Câu trả lời:


8

Tôi cũng đã thấy bài viết trên blog đó, và tự hỏi điều tương tự!

Bạn có thể sử dụng Khung HTMLthư viện D3 , nếu bạn không ngại làm một chút JavaScript.

Đây là một ví dụ mà tôi khó mã hóa. Bạn có thể chèn Biểu thức QGIS vào nguồn trang của mình (từ QGIS 2.14 trở lên)

ví dụ về khung html d3 trong trình soạn thảo in qgis

Trong trường hợp của tôi, tôi đã lưu tệp html cục bộ và hack nó cho đến khi tôi nhận được nó để hiển thị, sử dụng các công cụ dành cho nhà phát triển của trình duyệt.

Khi bạn đã làm việc, bạn sẽ có thể dán trực tiếp nguồn trang vào hộp văn bản 'nguồn' và thả các biểu thức QGIS vào (như giá trị trường, biến, v.v.) bằng Insert an expressionnút.

Tôi đã ghép lại ví dụ đó từ verticalleft.com . Hướng dẫn này rất hữu ích vì nó chỉ ra cách xây dựng biểu đồ thanh từ các danh sách đơn giản; hầu hết các ví dụ tôi đã thấy sử dụng các tệp TSV riêng biệt.

Bl.ocks.org có một tập hợp các ví dụ rất lớn.

Bạn có thể nhận mã cho các hướng dẫn AlignLeft tại đây trên GitHub

Điều này có thể tạo ra một plugin tốt ... Tôi thấy đã có một vài plugin d3, mặc dù tôi chưa có cơ hội dùng thử - có đáng để xem không?


2

Các DataPlotly plugin được nhận ở đó.

Thay vì chia tỷ lệ hình chữ nhật bằng cách sử dụng các giá trị phần trăm từ một trường được tính toán trước bằng một công cụ bên ngoài (Excel đã được sử dụng trong bài đăng trên blog được liên kết), DataPlotly cho phép bạn tính trực tiếp biểu đồ của các tính năng Atlas:

Tôi đã thêm XML cấu hình cho đối tượng DataPlotly ở cuối câu trả lời này.

Trong biểu đồ Plotly tất cả các thanh có cùng màu. Để có được các thanh màu riêng lẻ, tôi phải thu thập một đối tượng chú giải (10 cột, thay thế tất cả các văn bản nhập chú thích bằng khoảng trắng, xóa tất cả khoảng cách, điều chỉnh cẩn thận chiều cao và chiều rộng của các ký hiệu, ...) và đặt nó lên biểu đồ bằng cách sử dụng chế độ hòa trộn "Màn hình".

Một số thứ chưa hoạt động bằng DataPlotly

  • Thanh ngang trong khi chỉ định giới hạn trục
  • Dán nhãn cho mỗi thanh
  • Điều chỉnh phông chữ nhãn
  • Loại bỏ / điều chỉnh các đường lưới

Plugin DataPlotly đang được phát triển tích cực, vì vậy một số vấn đề này có thể được giải quyết trong tương lai.


Tệp cấu hình DataPlotly configuration.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dataplotly>
<Option type="Map">
 <Option type="Map" name="dynamic_properties">
  <Option type="QString" name="name" value=""/>
  <Option name="properties"/>
  <Option type="QString" name="type" value="collection"/>
 </Option>
 <Option type="Map" name="plot_layout">
  <Option type="QString" name="additional_info_expression" value=""/>
  <Option type="QString" name="bar_mode" value="group"/>
  <Option type="double" name="bargaps" value="0"/>
  <Option type="bool" name="bins_check" value="true"/>
  <Option type="bool" name="legend" value="false"/>
  <Option type="QString" name="legend_orientation" value="h"/>
  <Option type="invalid" name="legend_title"/>
  <Option type="Map" name="polar">
   <Option type="Map" name="angularaxis">
    <Option type="QString" name="direction" value="clockwise"/>
   </Option>
  </Option>
  <Option type="Map" name="range_slider">
   <Option type="int" name="borderwidth" value="1"/>
   <Option type="bool" name="visible" value="false"/>
  </Option>
  <Option type="QString" name="title" value=""/>
  <Option type="invalid" name="x_inv"/>
  <Option type="double" name="x_max" value="10.5"/>
  <Option type="double" name="x_min" value="0.5"/>
  <Option type="QString" name="x_title" value=""/>
  <Option type="QString" name="x_type" value="linear"/>
  <Option type="invalid" name="xaxis"/>
  <Option type="invalid" name="y_inv"/>
  <Option type="invalid" name="y_max"/>
  <Option type="invalid" name="y_min"/>
  <Option type="QString" name="y_title" value=""/>
  <Option type="QString" name="y_type" value="linear"/>
  <Option type="QString" name="z_title" value=""/>
 </Option>
 <Option type="Map" name="plot_properties">
  <Option type="invalid" name="additional_hover_text"/>
  <Option type="int" name="bins" value="10"/>
  <Option type="QString" name="box_orientation" value="v"/>
  <Option type="bool" name="box_outliers" value="false"/>
  <Option type="bool" name="box_stat" value="false"/>
  <Option type="invalid" name="color_scale"/>
  <Option type="bool" name="color_scale_data_defined_in_check" value="false"/>
  <Option type="bool" name="color_scale_data_defined_in_invert_check" value="false"/>
  <Option type="QString" name="cont_type" value="fill"/>
  <Option type="QString" name="contour_type_combo" value="Fill"/>
  <Option type="bool" name="cumulative" value="false"/>
  <Option type="List" name="custom">
   <Option type="QString" value="IMDD15"/>
  </Option>
  <Option type="QString" name="hover_text" value="all"/>
  <Option type="QString" name="in_color" value="#000000"/>
  <Option type="bool" name="invert_color_scale" value="false"/>
  <Option type="QString" name="invert_hist" value="increasing"/>
  <Option type="QString" name="line_combo" value="Solid Line"/>
  <Option type="QString" name="line_dash" value="solid"/>
  <Option type="QString" name="marker" value="markers"/>
  <Option type="double" name="marker_size" value="10"/>
  <Option type="int" name="marker_symbol" value="0"/>
  <Option type="QString" name="marker_type_combo" value="Points"/>
  <Option type="double" name="marker_width" value="1"/>
  <Option type="QString" name="name" value="IMDD15"/>
  <Option type="QString" name="normalization" value=""/>
  <Option type="double" name="opacity" value="1"/>
  <Option type="QString" name="out_color" value="#ffffff"/>
  <Option type="QString" name="point_combo" value=""/>
  <Option type="bool" name="selected_features_only" value="false"/>
  <Option type="bool" name="show_colorscale_legend" value="false"/>
  <Option type="bool" name="show_lines" value="false"/>
  <Option type="bool" name="show_lines_check" value="false"/>
  <Option type="bool" name="show_mean_line" value="false"/>
  <Option type="bool" name="violin_box" value="false"/>
  <Option type="QString" name="violin_side" value="both"/>
  <Option type="bool" name="visible_features_only" value="true"/>
  <Option type="QString" name="x_name" value="IMDD15"/>
  <Option type="QString" name="y_name" value=""/>
  <Option type="QString" name="z_name" value=""/>
 </Option>
 <Option type="QString" name="plot_type" value="histogram"/>
 <Option type="QString" name="source_layer_id" value="london_IMD_2004_2010_2015_081015_v120160214112646566"/>
</Option>

1
sử dụng tuyệt vời của DataPlotly! Bạn có nhớ mở một số vấn đề của kho lưu trữ plugin để tôi có thể xem và xem những gì tôi có thể làm không? github.com/ghtmtt/DataPlotly
matteo

@matteo: Xong rồi! Cảm ơn tất cả công việc khó khăn của bạn trên plugin siêu hữu ích này!
Jake

Vui mừng khi nhiều người thấy DataPlotly hữu ích!
matteo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.