我正在尝试使用axlsx为ruby生成饼图。一切都工作正常,但我似乎无法为每个“饼图”显示数据标签。我正在拍摄的内容或多或少像image。 (即它应该有数据标签和引导线)。如果标签只有数字值并且像往常一样包含带有颜色映射的图例也可以。
任何人都知道怎么做?
由于
答案 0 :(得分:7)
这是axlsx的作者randym。 简短的版本是尚未实现的,因此您无法根据图像将标签添加到图表中。
规格中最大的缺失部分是(ECMA-376 - 第1部分)
21.2.2.49 dLbls(数据标签)
需要将其插入到系列,图表或两者中,因为它似乎是这三者的共同元素。
本周晚些时候我会有更深入的了解,但是如果你想为axlsx做贡献 - 请抓住freenode(#axlsx)或将问题发布到回购https://github.com/randym/axlsx
更新
事实证明这比我预想的要容易得多。
现在,掌上电脑(https://github.com/randym/axlsx)上有一个工作版本用于饼图。 我将在接下来的几天内更新其余支持的图表类型,并在下周正式发布。
感谢您告诉我您需要这个。
以下是如何使用它的简单示例:
require 'axlsx'
p = Axlsx::Package.new
wb = p.workbook
# Pie Chart
wb.add_worksheet(:name => "Pie Chart") do |sheet|
sheet.add_row ["First", "Second", "Third", "Fourth"]
sheet.add_row [1, 2, 3, 4]
sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,2], :end_at => [5, 15], :title=> 'dark corner here') do |chart|
chart.add_series :data => sheet["A2:D2"], :labels => sheet["A1:D1"]
chart.d_lbls.show_val = true
chart.d_lbls.show_percent = true
chart.d_lbls.d_lbl_pos = :outEnd
chart.d_lbls.show_leader_lines = true
end
end
p.serialize 'pie_chart_with_data_labels.xlsx'
d_lbls的可用属性是:
lbl_pos 必须是以下之一:bestFit,:b,:ctr,:inBase,:inEnd,:l,:outEnd,:r,:t 默认情况下,axlsx将使用:bestFit
以及以下布尔属性:
<强> show_legend_key 强>
<强> show_val 强>
<强> show_cat_name 强>
<强> show_ser_name 强>
<强> show_percent 强>
<强> show_bubble_size 强>
<强> show_leader_lines 强>