ContEx图表导出与分享:SVG、PNG格式转换技巧
【免费下载链接】contexCharting and graphing library for Elixir项目地址: https://gitcode.com/gh_mirrors/co/contex
ContEx是Elixir生态中强大的图表绘制库,提供直观的API和丰富的可视化组件。本文将详细介绍如何使用ContEx实现图表的SVG格式导出与PNG格式转换,帮助开发者轻松完成数据可视化成果的分享与展示。
📊 ContEx图表导出基础
ContEx原生支持SVG矢量图导出,这一功能通过to_svg/2函数实现。该函数在多个核心模块中都有实现,包括:
- 柱状图:lib/chart/barchart.ex
- 折线图:lib/chart/lineplot.ex
- 散点图:lib/chart/pointplot.ex
- 甘特图:lib/chart/gantt.ex
所有图表类型最终都通过lib/chart/plot.ex中的统一接口进行渲染,确保导出格式的一致性。
SVG导出核心代码示例
# 创建示例图表 plot = Contex.BarChart.new(data, "Category", "Value") |> Contex.Plot.new(600, 400) |> Contex.Plot-title("Sample Bar Chart") # 导出为SVG {:safe, svg_content} = Contex.Plot.to_svg(plot) # 保存到文件 File.write!("chart.svg", svg_content)🖼️ 高质量SVG图表展示
ContEx生成的SVG图表包含完整的矢量信息,支持无损缩放。以下是多种图表类型的组合展示:
图:ContEx支持的多种图表类型示例,包括柱状图、散点图和甘特图
🔄 SVG到PNG的转换方案
虽然ContEx本身不直接提供PNG导出功能,但可以通过以下两种方式将SVG转换为PNG格式:
1. 使用外部命令行工具
推荐使用convert(ImageMagick)或inkscape工具进行转换:
# 使用ImageMagick转换 convert -density 300 chart.svg -quality 90 chart.png # 使用Inkscape转换 inkscape --export-type=png --export-dpi=300 chart.svg -o chart.png2. Elixir集成方案
可以通过System.cmd/2在Elixir代码中调用外部工具:
def svg_to_png(svg_path, png_path, dpi \\ 300) do System.cmd("convert", [ "-density", to_string(dpi), svg_path, "-quality", "90", png_path ]) end💡 图表导出最佳实践
分辨率设置
- 屏幕展示:推荐96-150 DPI
- 打印输出:建议300 DPI以上
- 高清显示:可设置为600 DPI
颜色管理
ContEx使用lib/chart/scale/category_colour_scale.ex定义颜色方案,确保导出图表的色彩一致性。
文件优化
SVG文件可通过lib/chart/svg_sanitize.ex进行清理,移除冗余信息,减小文件体积。
📝 总结
ContEx提供了便捷的SVG导出功能,结合外部工具可以轻松实现PNG格式转换。通过本文介绍的方法,开发者可以将Elixir应用中的数据可视化成果以多种格式分享和展示。无论是用于报告、演示还是网页展示,ContEx都能满足您的图表导出需求。
要开始使用ContEx,只需克隆仓库并按照文档进行安装:
git clone https://gitcode.com/gh_mirrors/co/contex cd contex mix deps.get探索lib/chart/gallery/目录下的示例代码,快速掌握各种图表类型的导出技巧。
【免费下载链接】contexCharting and graphing library for Elixir项目地址: https://gitcode.com/gh_mirrors/co/contex
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考