开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
forked from vanvenj/Plot.NET
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
Plot.NET
/
src
/
PlotNET
/
Plotter.cs
Plot.NET
/
src
/
PlotNET
/
Plotter.cs
Plotter.cs 5.54 KB
一键复制 编辑 原始数据 按行查看 历史
using System;
using System.Linq;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Newtonsoft.Json.Linq;
using NumSharp;
using ICSharpCore.Primitives;
namespace PlotNET
{
public class Plotter
{
private string _jsUrl = "https://cdn.plot.ly/plotly-latest.min.js";
private List<Trace> _traces = new List<Trace>();
public Plotter Plot(NDArray xValues, NDArray yValues, string name, ChartType type = ChartType.Bar, string mode = null)
{
_traces.Add(new Trace(xValues, yValues, type)
{
Name = name,
Mode = mode
});
return this;
}
public Plotter Plot(float[] xValues, float[] yValues, string name, ChartType type = ChartType.Bar, string mode = null)
{
_traces.Add(new Trace(xValues, yValues, type)
{
Name = name,
Mode = mode
});
return this;
}
public Plotter Plot(int[] xValues, int[] yValues, string name, ChartType type = ChartType.Bar, string mode = null)
{
_traces.Add(new Trace(xValues, yValues, type)
{
Name = name,
Mode = mode
});
return this;
}
public Plotter Plot(string[] labels, NDArray yValues, string name, ChartType type = ChartType.Bar, string mode = null)
{
_traces.Add(new Trace(labels, yValues, type)
{
Name = name,
Mode = mode
});
return this;
}
public Plotter Plot(string[] labels, float[] yValues, string name, ChartType type = ChartType.Bar, string mode = null)
{
_traces.Add(new Trace(labels, yValues, type)
{
Name = name,
Mode = mode
});
return this;
}
public Plotter Plot(string[] labels, int[] yValues, string name, ChartType type = ChartType.Bar, string mode = null)
{
_traces.Add(new Trace(labels, yValues, type)
{
Name = name,
Mode = mode
});
return this;
}
public Plotter Plot(Trace trace)
{
_traces.Add(trace);
return this;
}
private string RenderHeader()
{
return $"<script src=\"{_jsUrl}\"></script>";
}
private string RenderBody(string divClientID)
{
return $"<div id=\"{divClientID}\"></div>";
}
private string GetDataByTraces()
{
return "[" + string.Join(",", _traces.Select(t =>
{
var xTexts = t.XValues != null ? string.Join(",", t.XValues) : string.Join(",", t.Labels.Select(l => "'" + l + "'"));
var nameNode = string.Empty;
if (!string.IsNullOrEmpty(t.Name))
{
nameNode = @",
name: '" + t.Name + "'";
}
var modeNode = string.Empty;
if (!string.IsNullOrEmpty(t.Mode))
{
modeNode = @",
mode: '" + t.Mode + "'";
}
return @"{
x: [" + xTexts + @"],
y: [" + string.Join(",", t.YValues) + @"],
type: '" + t.Type.ToString().ToLower()
+ @"'" + nameNode +
modeNode + @"
}";
})) + "]";
}
private string RenderJS(string divClientID, int width, int height)
{
var data = GetDataByTraces();
var strWidth = @",
width: " + (width - 20) + "," + @"
height: " + (height - 20);
return @"<script>
var data = " + data + @";
Plotly.newPlot('" + divClientID + @"', data,
{
margin: { t: 5, l: 30, r: 5, b: 30 }" + strWidth + @"
});
</script>";
}
public void Show()
{
Show(0, 0);
}
public void Show(int width, int height)
{
if (width <= 0 && height <= 0)
{
width = 800;
height = 500;
}
else if (width > 0 && height <= 0)
{
height = (width / 8) * 5;
}
else if (height > 0 && width <= 0)
{
width = (height / 5) * 8;
}
var html = RenderHeader();
var divClientID = "plot-" + Math.Abs(Guid.NewGuid().ToString().GetHashCode());
var fileName = divClientID + ".html";
html += RenderBody(divClientID);
html += RenderJS(divClientID, width, height);
File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), fileName), html, Encoding.UTF8);
var strWidth = width == 0 ? "100%" : width.ToString() + "px";
var strHeight = height == 0 ? "100%" : height.ToString() + "px";
DisplayDataEmitter.Emit(new DisplayData
{
Data = new JObject
{
{ "text/html", $"<iframe border=\"0\" style=\"border:0px;width:{strWidth};height:{strHeight};\" src=\"{fileName}\"></iframe>" }
}
});
_traces.Clear();
}
}
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

https://github.com/SciSharp/Plot.NET
暂无标签
Apache-2.0
使用 Apache-2.0 开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/matadorbb/Plot.NET.git
git@gitee.com:matadorbb/Plot.NET.git
matadorbb
Plot.NET
Plot.NET
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /