如何在QGIS打印编辑器中创建直方图图例?


14

我在寻找一种在打印编辑器中动态构建图形(直方图)的方法时找到了此博客文章

我想从博客中复制的功能是在qgis打印编辑器中绘制静态矩形,然后根据字段值(在这种情况下为直方图上的条形图)调整大小。

从而创建图例/直方图

我可以按照本教程进行操作,但我只是想知道a)在matplotlib中构建需要的图形并导入图像之外还有一种更简便的方法,或者b)此功能将在以后的版本中内置到qgis中。

在此处输入图片说明

Answers:


8

我也看过该博客文章,并想知道同样的事情!

如果您不介意使用JavaScript,则可以使用HTML FramesD3库

这是我硬编码的示例。您可以将QGIS表达式插入页面源(来自QGIS 2.14或更高版本)

qgis打印作曲家中d3 html框架的示例

就我而言,我已经使用浏览器的开发人员工具将html文件保存在本地并对其进行了破解,直到将其显示出来。

工作完成后,您应该能够直接将页面源粘贴到“源”文本框中,并使用Insert an expression按钮将QGIS表达式(例如字段值,变量等)放入其中。

我从alignedleft.com整理了这个示例。本教程非常有用,因为它显示了如何从简单列表中构建条形图。我见过的大多数示例都使用单独的TSV文件。

Bl.ocks.org有很多示例。

您可以在GitHub上获取AlignedLeft教程的代码

这可能是一个不错的插件...虽然我还没有机会尝试使用d3插件,但我已经看到了几个d3插件-值得一看吗?


2

DataPlotly插件到达那里。

使用DataPlotly可以直接计算Atlas功能的直方图,而不必使用通过外部工具预先计算的字段中的百分比值来缩放矩形(在链接的博客文章中使用了Excel)。

我在此答案的末尾添加了DataPlotly对象的配置XML。

在图解直方图中,所有条形都具有相同的颜色。要获得单独显示颜色的条,我必须处理图例对象(10列,用空格替换所有图例输入文本,删除所有间距,仔细调整符号的高度和宽度,...),然后使用放置在直方图上“屏幕”混合模式。

使用DataPlotly某些功能尚无法使用

  • 指定轴限制时的单杠
  • 给每个酒吧贴标签
  • 调整标签字体
  • 移除/调整网格线

DataPlotly插件正在积极开发中,因此将来可能会解决其中一些问题。


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
精彩使用DataPlotly!您介意打开插件存储库的某些问题,以便我看看可以做什么吗?github.com/ghtmtt/DataPlotly
matteo

@matteo:完成!感谢您为这个超级有用的插件所做的所有努力!
杰克

很高兴许多人发现DataPlotly有用!
matteo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.