我需要一种方法来建立使用提供的json数据的图像。我有json文件,其中包含用户组合。最后,我希望将json数据转换为图像,这样每次用户进入页面时,我都需要绘制一个图表。但我对如何开始却一无所知。
json文件如下所示
{
{
"time": 1585440000,
"closing_balance": 5882.2
},
{
"time": 1585526400,
"closing_balance": 6403.31
},
{
"time": 1585526400,
"closing_balance": 7403.31
},
{
"time": 1585526400,
"closing_balance": 5403.31
},...
}现在,我想通过一天一次转换为图像来以图形格式显示上述数据。
发布于 2021-04-20 20:03:21
您的json数据非常简单,因此您可以在控制器中读取JSON文件,并将其与https://github.com/ankane/chartkick之类的gem一起使用
首先,您需要让gem能够使用您的数据,您只需要读取json文件并将日期映射到值(假设您想要一个折线图或条形图)。
在您的控制器中:
json_file = File.read('path-to-your-file.json')
data = JSON.parse(json_file)
@data = data.each_with_object({}) do |data_hash, new_hash|
new_hash[Time.at(data_hash["time"]).to_datetime] = data_hash["closing_balance"]
end
# this will give you something like: {Sun, 29 Mar 2020 00:00:00 +0000=>5882.2, Mon, 30 Mar 2020 01:00:00 +0100=>5403.31}在您的视图中:
<%= line_chart @data %>确保可能安装gem (在上面的gem链接中的文档)
注意,您当前的json文件(您发送的那个)已经损坏了,它应该是一个包含多个散列的数组,而不是一个包含多个没有键的散列的散列
[
{
"time": 1585440000,
"closing_balance": 5882.2
},
{
"time": 1585526400,
"closing_balance": 6403.31
},
{
"time": 1585526400,
"closing_balance": 7403.31
},
{
"time": 1585526400,
"closing_balance": 5403.31
}
]并且多个时间是相同的,因此图表将只在该时间显示第一个值
https://stackoverflow.com/questions/67176834
复制相似问题