sql = "select GROUP_CONCAT( DATE_FORMAT(format_date,'%d') ,'@', chemical_count ) as group_chemical_count,
GROUP_CONCAT( DATE_FORMAT(format_date,'%d') ,'@', vendor_num ) as group_vendor_num,
a.format_date_month
from
(select
chemical_num as chemical_count ,
vendor_num as vendor_num,
DATE_FORMAT(data_statistics.created_at,'%Y-%m-%d') as format_date ,
DATE_FORMAT(data_statistics.created_at,'%Y-%m') as format_date_month
from data_statistics
where created_at >= '#{@start_time}' and created_at < '#{@end_time}'
group by format_date) as a
group by a.format_date_month"
@reports = Inquiry.find_by_sql(sql)
@product_charts = {}
@company_charts = {}
@report_month = []
@reports.each do |report|
month = report["format_date_month"] + "-01"
search_day = DateTime.parse(month).to_date
end_date = search_day.at_end_of_month.strftime("%d").to_i
_product_charts_data = []
_company_charts_data = []
(1..end_date).each do |_|
_product_charts_data << (report["group_chemical_count"].match(/#{_.to_s.rjust(2,"0") }@\d+/) ? report["group_chemical_count"].match(/#{_.to_s.rjust(2,"0")}@\d+/)[0].split("@")[1].to_i : 0 )
_company_charts_data << (report["group_vendor_num"].match(/#{_.to_s.rjust(2,"0") }@\d+/) ? report["group_vendor_num"].match(/#{_.to_s.rjust(2,"0")}@\d+/)[0].split("@")[1].to_i : 0 )
end
@report_month << report['format_date_month'].delete('-')
@product_charts[(report['format_date_month'].delete('-'))] = _product_charts_data
@company_charts[(report['format_date_month'].delete('-'))] = _company_charts_data
end
@chart_data_x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
@chart_data_tab = @report_month
@chart_list = ['new vendor','new product']
@charts1 = @company_charts.to_json
@charts2 = @product_charts.to_json
<%= javascript_include_tag 'echarts.min' %>
<script type="text/javascript">
var div_tag = "<%= div_id %>"
var myChart = echarts.init(document.getElementById(div_tag));
var dataMap = {};
function dataFormatter(obj) {
var temp;
<% @chart_data_tab.each do |year| %>
var max = 0;
var sum = 0;
temp = obj["<%= year %>"];
for (var i = 0, l = temp.length; i < l; i++) {
max = Math.max(max, temp[i]);
sum += temp[i];
obj["<%= year %>"][i] = {
name : i,
value : temp[i]
}
}
obj["<%= year %>max"] = Math.floor(max / 100) * 100;
obj["<%= year %>sum"] = sum;
<% end %>
return obj;
}
<% (1..@chart_list.size).each do |i|%>
var aa= "<%= eval('@charts'+i.to_s) %>".replace(/"/g,"");
eval("(dataMap.dataChart" + <%=i%> + " = dataFormatter" +'(' + aa + '))');
<% end %>
var option = {
baseOption: {
timeline: {
// y: 0,
axisType: 'category',
// realtime: false,
// loop: false,
autoPlay: true,
// currentIndex: 2,
playInterval: 1000,
// controlStyle: {
// position: 'left'
// },
data: [
<%= @chart_data_tab.join(",") %>
],
label: {
formatter : function(s) {
return (new Date(s)).getFullYear();
}
}
},
tooltip: {
},
legend: {
x: 'right',
data: eval("("+"<%= @chart_list %>".replace(/"/g,"'")+")")
},
calculable : true,
grid: {
top: 80,
bottom: 100,
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow',
label: {
show: true,
formatter: function (params) {
return params.value.replace('\n', '');
}
}
}
}
},
xAxis: [
{
'type':'category',
'axisLabel':{'interval':0},
'data': <%= @chart_data_x %>,
splitLine: {show: false}
}
],
yAxis: [
{
type: 'value',
name: 'increased qty'
}
],
series: [
<% @chart_list.each do |c|%>
{name: '<%=c%>', type: 'bar'},
<% end %>
{
type: 'pie',
center: ['75%', '35%'],
radius: '18%',
z: 100
}
]
},
options: [
<% @chart_data_tab.each_with_index do |y,index|%>
{
title: {text: '<%=y[0..3]+"-"+y[4..-1]%>'+" <%=@chart_list.join(' / ')%>"},
series: [
<% (1..@chart_list.size).each do |i|%>
{data: eval("(dataMap.dataChart<%=i%>['<%=y%>'])") },
<% end %>
{data: [
<% @chart_list.each_with_index do |c,i|%>
{name: '<%=c%>', value: eval("(dataMap.dataChart<%=i+1%>['<%=y%>sum'])") },
<% end %>
]}
]
},
<% end %>
]
}
myChart.setOption(option);
</script>
- 大小: 61.1 KB
分享到:
相关推荐
总的来说,使用Ruby和FusionCharts生成柱状图和饼图是一种高效的方法,可以帮助我们直观地展示统计报表,便于理解和分析数据。通过深入学习和实践,你将能够创建出更加复杂和富有交互性的数据可视化应用。
标题中的“ice最简单实现 ruby调用ice接口”是指在Ruby编程语言中使用ICE(Internet Communication Engine)框架来实现远程方法调用(RPC)。ICE是由ZeroC开发的一种跨平台、高性能的中间件,它允许不同语言的应用...
Charts是一个强大的图表库,由Daniel Gindi开发,适用于iOS、tvOS和macOS平台,它提供了丰富的图表类型,包括柱状图、线形图以及我们关注的饼状图。 首先,要使用Charts框架,我们需要在Xcode项目中添加依赖。可以...
PyCall:从Ruby语言中调用Python函数该库提供了直接从Ruby语言中调用Python并与之进行部分互操作的功能。 您可以在PyCall中导入任意Python模块:从Ruby语言调用Python函数该库提供了直接从Ruby语言调用Python并与之...
Ruby-PyCall是一个非常有用的库,它允许Ruby程序员无缝地调用Python的函数和模块,极大地扩展了Ruby的生态系统。这个库使得两个语言之间的交互变得简单而高效,特别是在需要利用Python的强大科学计算或数据处理能力...
Ruby-OurPC是一个针对gRPC框架的实验性实现,它为开发者提供了在Ruby环境中构建gRPC客户端和服务器的能力。gRPC是一个高性能、开源和通用的RPC(远程过程调用)框架,它基于HTTP/2协议设计,支持多种编程语言,包括...
这行代码`require 'win32ole'`使得Ruby程序能够调用Excel的API。 2. **启动Excel应用** 创建一个新的Excel应用实例,可以通过`WIN32OLE::new('excel.Application')`来实现。例如: ```ruby excel = WIN32OLE::...
Ruby-kitabu是一个基于Ruby语言的框架,专为创建电子书籍设计。它的核心目标是将Markdown格式的内容转换成各种常见的电子书格式,如PDF、EPUB、Mobi、Text以及HTML,让作者能够轻松地从文本内容制作出专业的电子出版...
FusionCharts free 是一个跨平台,跨浏览器的flash图表组件解决方案,能够被 ASP.NET, ASP, PHP, JSP, ColdFusion, Ruby on Rails, 简单 HTML页面甚至PPT调用。你不需要知道任何关于flash编程的知识,你只需要知道...
Rmagick 允许 Ruby 开发者通过简单的 API 调用来处理图像,包括读取、写入、转换和操作各种格式的图像文件。在给定的文件列表中,`rmagick-2.10.0-x86-mswin32.gem` 就是这个库的安装包,适用于 32 位的 Windows ...
该库提供了直接从Ruby语言调用Python并与之进行部分互操作的功能。 您可以将任意Python模块导入Ruby模块,通过从Ruby到Python的自动类型转换来调用Python函数。 支持的Ruby版本 pycall.rb支持Ruby 2.3或更高版本。 ...
forecast-ruby, 用于从预测天气API中检索数据的ruby gem forecast_ioruby 中的forecast.io API包装器。安装gem install forecast_io或者你的Gemfilegem 'forecast_io'用法确保你需要库。requir
ruby-nmap, Nmap探测工具和安全/端口扫描器的Rubyful接口 ruby源代码问题文档文档[Email] ( mailto: 后端,gmail.com) 处的mod3 描述to nmap,探测工具和安全/端口扫描器的ruby 界面。特性为运行nmap提供一个 ruby ...
RubyGraphViz是Ruby编程语言与GraphViz图形渲染库之间的接口,允许开发者在Ruby程序中生成复杂的图形和图表。GraphViz是一个强大的开源图形绘制软件,它能够自动生成有向无环图(DAG)、树状图、网络图等多种类型的...
Ruby Ruby Ruby Ruby Ruby Ruby
两者结合可能是为了让易语言程序调用Ruby脚本执行特定任务,比如利用Ruby的网络库进行数据抓取或分析。通过调用系统命令或使用子进程,易语言程序可以启动并控制Ruby脚本,实现功能互补。 4. **Ruby的脚本执行**: ...
ruby-rust-互操作展示在 Ruby 运行时中从 Rust 调用基于数字的函数我希望这些例子能帮助你使用 Rust 设置 Ruby! 所有这些示例都在使用 Ruby 2.1.6 和 Rust 1.0.0-beta.4 的 Windows 上进行了测试如果你克隆 repo,...
nyaplot, 用于 ruby的交互式绘图生成器 Nyaplot Nyaplot是用于 ruby 用户的交互式绘图生成器。 它的目标是在 ruby 中创建交互式绘图,并且仍然允许快速Prototype化。定制和与其他科学 Gems的集成。Nyaplot是来自'nya...
此外,它的灵活性体现在可以自定义各种图表类型,包括折线图、柱状图、饼图、散点图等多种图表,并能自由配置颜色、数据系列、轴标签、图例、工具提示等各种细节。 在Ruby on Rails环境中,Ruby-LazyHighCharts可以...