<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Apache ECharts on OINK</title>
		<link>https://oink.pgsty.com/zh/docs/advanced/echarts/</link>
		<description>Recent content in Apache ECharts on OINK</description>
		<generator>Hugo</generator>
		<language>zh-CN</language>
		
		
		
		
			<atom:link href="https://oink.pgsty.com/zh/docs/advanced/echarts/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>ECharts 图表示例集</title>
				<link>https://oink.pgsty.com/zh/docs/advanced/echarts/gallery/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://oink.pgsty.com/zh/docs/advanced/echarts/gallery/</guid>
				<description>&lt;p&gt;本页示例只使用结构化 YAML，不需要回调代码，因此处于最简单的 ECharts 创作与审查边界内。所有数字均为演示数据。&lt;/p&gt;&#xA;&lt;h2 id=&#34;reuse-a-dataset&#34;&gt;复用数据集&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#reuse-a-dataset&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;ECharts &lt;code&gt;dataset&lt;/code&gt;&#xA;把记录与视觉编码分开。序列可以按名称引用维度，比重复维护多组平行数组更容易审查。&lt;/p&gt;&#xA;&lt;h2 id=&#34;bar-chart-from-a-dataset&#34;&gt;从数据集创建柱状图&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#bar-chart-from-a-dataset&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go-html-template&#34; data-lang=&#34;go-html-template&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;echarts&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;320px&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dataset:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  source:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    - [stage, minutes]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    - [草稿, 18]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    - [评审, 11]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    - [发布, 4]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;xAxis: { type: category }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yAxis: { type: value, name: 分钟 }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;series:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - type: bar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    encode: { x: stage, y: minutes }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;echarts&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;示例表示中位耗时从撰写草稿的 18 分钟，逐步下降到发布阶段的 4 分钟。&lt;/p&gt;&#xA;&lt;!-- prettier-ignore-start --&gt;&#xA;&#xA;&lt;div id=&#34;td-echarts-66307d799b879d549a713cb7a4dfb566-0&#34; class=&#34;td-echarts td-max-width-on-larger-screens&#34;&#xA;  data-td-echarts&gt;&#xA;  &lt;div data-td-echarts-canvas style=&#34;height: 320px&#34;&gt;&lt;/div&gt;&#xA;  &lt;script type=&#34;application/json&#34; data-td-echarts-options&gt;{&#34;dataset&#34;:{&#34;source&#34;:[[&#34;stage&#34;,&#34;minutes&#34;],[&#34;草稿&#34;,18],[&#34;评审&#34;,11],[&#34;发布&#34;,4]]},&#34;series&#34;:[{&#34;encode&#34;:{&#34;x&#34;:&#34;stage&#34;,&#34;y&#34;:&#34;minutes&#34;},&#34;type&#34;:&#34;bar&#34;}],&#34;xAxis&#34;:{&#34;type&#34;:&#34;category&#34;},&#34;yAxis&#34;:{&#34;name&#34;:&#34;分钟&#34;,&#34;type&#34;:&#34;value&#34;}}&lt;/script&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;!-- prettier-ignore-end --&gt;&#xA;&lt;h2 id=&#34;line-and-area-comparison&#34;&gt;折线与面积对比&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#line-and-area-comparison&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;多个序列描述同一组时间区间时，可以共用分类轴。面积填充突出总量，折线则保留各序列的趋势。&lt;/p&gt;</description>
			</item>
			<item>
				<title>ECharts 回调与可信代码</title>
				<link>https://oink.pgsty.com/zh/docs/advanced/echarts/callbacks/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://oink.pgsty.com/zh/docs/advanced/echarts/callbacks/</guid>
				<description>&lt;p&gt;大多数 ECharts 选项都应保持为声明式 JSON 或 YAML。自定义格式化器、数据驱动样式等合法选项需要函数时，Oink 可以通过 JavaScript 围栏代码块与&#xA;&lt;code&gt;$fn:name&lt;/code&gt; 引用支持这些场景。&lt;/p&gt;&#xA;&lt;h2 id=&#34;trusted-author-boundary&#34;&gt;可信作者边界&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#trusted-author-boundary&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;回调代码会在每位访问者的浏览器中执行，拥有页面同源环境下的常规 JavaScript 权限。Oink 会安全序列化结构化图表选项，但不会沙箱隔离作者提供的回调。只有可信的项目作者才能添加或审查这类代码。&lt;/p&gt;&#xA;&lt;p&gt;短代码会输出行内注册脚本，因此回调还可能改变站点的内容安全策略（CSP）要求。能够用声明式选项表达同一行为时，请不要使用回调。&lt;/p&gt;&#xA;&lt;h2 id=&#34;register-and-reference-functions&#34;&gt;注册并引用函数&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#register-and-reference-functions&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;在短代码中加入一个或多个 &lt;code&gt;js&lt;/code&gt; 或 &lt;code&gt;javascript&lt;/code&gt; 围栏。使用具名&#xA;&lt;code&gt;var&lt;/code&gt;、&lt;code&gt;let&lt;/code&gt;、&lt;code&gt;const&lt;/code&gt; 赋值或函数声明定义每个函数，再从 YAML 或 JSON 中通过&#xA;&lt;code&gt;$fn:name&lt;/code&gt; 引用。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go-html-template&#34; data-lang=&#34;go-html-template&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;echarts&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;height&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;320px&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;```js&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;var formatMinutes = function (value) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  return value + &amp;#39; 分钟&amp;#39;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;```&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;```yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yAxis:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  type: value&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  axisLabel: { formatter: $fn:formatMinutes }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;```&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;{{&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;echarts&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;err&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;}}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Oink 会先移除 JavaScript 围栏，再解析剩余选项；初始化图表时注册具名函数，并在调用&#xA;&lt;code&gt;chart.setOption()&lt;/code&gt; 前替换 &lt;code&gt;$fn:name&lt;/code&gt; 值。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
