jsMind编写思维导图
| <html> |
| <head> |
| |
| |
| <link type="text/css" rel="stylesheet" href="./jsmind.css" /> |
| <script type="text/javascript" src="./jsmind.js"></script> |
| |
| </head> |
| <body> |
| <div id="jsmind_container"></div> |
| |
| <script type="text/javascript"> |
| var mind = { |
| |
| "meta":{ |
| "name":"jsMind-demo-tree", |
| "author":"hizzgdev@163.com", |
| "version":"0.2" |
| }, |
| |
| "format":"node_tree", |
| |
| "data":{"id":"root","topic":"jsMind","children":[ |
| {"id":"open","topic":"Open Source","direction":"right","expanded":true,"children":[ |
| {"id":"open1","topic":"on GitHub"}, |
| {"id":"open2","topic":"BSD License"} |
| ]}, |
| {"id":"powerful","topic":"Powerful","direction":"right","children":[ |
| {"id":"powerful1","topic":"Base on Javascript"}, |
| {"id":"powerful2","topic":"Base on HTML5"}, |
| {"id":"powerful3","topic":"Depends on you"} |
| ]}, |
| ]} |
| }; |
| var options = { |
| container: 'jsmind_container', |
| theme: 'orange', |
| editable: true, |
| }; |
| var jm = new jsMind(options); |
| jm.show(mind); |
| </script> |
| </body> |
| </html> |
查看详情

vscode+markmap编写思维导图
- 官方案例
- vscode安装markmap插件,复制官方代码到markdown文件
| --- |
| markmap: |
| colorFreezeLevel: 2 |
| --- |
| |
| # markmap |
| |
| ## Links |
| |
| - [Website](https://markmap.js.org/) |
| - [GitHub](https://github.com/gera2ld/markmap) |
| |
| ## Related Projects |
| |
| - [coc-markmap](https://github.com/gera2ld/coc-markmap) for Neovim |
| - [markmap-vscode](https://marketplace.visualstudio.com/items?itemName=gera2ld.markmap-vscode) for VSCode |
| - [eaf-markmap](https://github.com/emacs-eaf/eaf-markmap) for Emacs |
| |
| ## Features |
| |
| Note that if blocks and lists appear at the same level, the lists will be ignored. |
| |
| ### Lists |
| |
| - **strong** ~~del~~ *italic* ==highlight== |
| - `inline code` |
| - [x] checkbox |
| - Katex: $x = {-b \pm \sqrt{b^2-4ac} \over 2a}$ <!-- markmap: fold --> |
| - [More Katex Examples](#?d=gist:af76a4c245b302206b16aec503dbe07b:katex.md) |
| - Now we can wrap very very very very long text based on `maxWidth` option |
| |
| ### Blocks |
| |
| ```js |
| console('hello, JavaScript') |
| ``` |
| |
| | Products | Price | |
| |-|-| |
| | Apple | 4 | |
| | Banana | 2 | |
| |
|  |
| |
-
右上角查看

-
效果
查看详情

echarts编写思维导图
案例1
| <!-- |
| 此示例下载自 https://echarts.apache.org/examples/zh/editor.html?c=tree-legend |
| --> |
| <!DOCTYPE html> |
| <html lang="en" style="height: 100%"> |
| <head> |
| <meta charset="utf-8"> |
| </head> |
| <body style="height: 100%; margin: 0"> |
| <div id="container" style="height: 100%"></div> |
| |
| <!-- <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/echarts.min.js"></script> --> |
| <script type="text/javascript" src="./echarts.min.js"></script> |
| <!-- Uncomment this line if you want to dataTool extension |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/extension/dataTool.min.js"></script> |
| --> |
| <!-- Uncomment this line if you want to use gl extension |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts-gl/2/files/dist/echarts-gl.min.js"></script> |
| --> |
| <!-- Uncomment this line if you want to echarts-stat extension |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts-stat/latest/files/dist/ecStat.min.js"></script> |
| --> |
| <!-- Uncomment this line if you want to use map |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/4.9.0/files/map/js/china.js"></script> |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/4.9.0/files/map/js/world.js"></script> |
| --> |
| <!-- Uncomment these two lines if you want to use bmap extension |
| <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_API_KEY"></script> |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/extension/bmap.min.js"></script> |
| --> |
| |
| <script type="text/javascript"> |
| var dom = document.getElementById('container'); |
| var myChart = echarts.init(dom, null, { |
| renderer: 'canvas', |
| useDirtyRect: false |
| }); |
| var app = {}; |
| |
| var option; |
| |
| myChart.showLoading(); |
| const data = { |
| name: 'flare', |
| children: [ |
| { |
| name: 'data', |
| children: [ |
| { |
| name: 'converters', |
| children: [ |
| { name: 'Converters', value: 721 }, |
| { name: 'DelimitedTextConverter', value: 4294 } |
| ] |
| }, |
| { |
| name: 'DataUtil', |
| value: 3322 |
| } |
| ] |
| }, |
| { |
| name: 'display', |
| children: [ |
| { name: 'DirtySprite', value: 8833 }, |
| { name: 'LineSprite', value: 1732 }, |
| { name: 'RectSprite', value: 3623 } |
| ] |
| }, |
| { |
| name: 'flex', |
| children: [{ name: 'FlareVis', value: 4116 }] |
| }, |
| { |
| name: 'query', |
| children: [ |
| { name: 'AggregateExpression', value: 1616 }, |
| { name: 'And', value: 1027 }, |
| { name: 'Arithmetic', value: 3891 }, |
| { name: 'Average', value: 891 }, |
| { name: 'BinaryExpression', value: 2893 }, |
| { name: 'Comparison', value: 5103 }, |
| { name: 'CompositeExpression', value: 3677 }, |
| { name: 'Count', value: 781 }, |
| { name: 'DateUtil', value: 4141 }, |
| { name: 'Distinct', value: 933 }, |
| { name: 'Expression', value: 5130 }, |
| { name: 'ExpressionIterator', value: 3617 }, |
| { name: 'Fn', value: 3240 }, |
| { name: 'If', value: 2732 }, |
| { name: 'IsA', value: 2039 }, |
| { name: 'Literal', value: 1214 }, |
| { name: 'Match', value: 3748 }, |
| { name: 'Maximum', value: 843 }, |
| { |
| name: 'methods', |
| children: [ |
| { name: 'add', value: 593 }, |
| { name: 'and', value: 330 }, |
| { name: 'average', value: 287 }, |
| { name: 'count', value: 277 }, |
| { name: 'distinct', value: 292 }, |
| { name: 'div', value: 595 }, |
| { name: 'eq', value: 594 }, |
| { name: 'fn', value: 460 }, |
| { name: 'gt', value: 603 }, |
| { name: 'gte', value: 625 }, |
| { name: 'iff', value: 748 }, |
| { name: 'isa', value: 461 }, |
| { name: 'lt', value: 597 }, |
| { name: 'lte', value: 619 }, |
| { name: 'max', value: 283 }, |
| { name: 'min', value: 283 }, |
| { name: 'mod', value: 591 }, |
| { name: 'mul', value: 603 }, |
| { name: 'neq', value: 599 }, |
| { name: 'not', value: 386 }, |
| { name: 'or', value: 323 }, |
| { name: 'orderby', value: 307 }, |
| { name: 'range', value: 772 }, |
| { name: 'select', value: 296 }, |
| { name: 'stddev', value: 363 }, |
| { name: 'sub', value: 600 }, |
| { name: 'sum', value: 280 }, |
| { name: 'update', value: 307 }, |
| { name: 'variance', value: 335 }, |
| { name: 'where', value: 299 }, |
| { name: 'xor', value: 354 }, |
| { name: '_', value: 264 } |
| ] |
| }, |
| { name: 'Minimum', value: 843 }, |
| { name: 'Not', value: 1554 }, |
| { name: 'Or', value: 970 }, |
| { name: 'Query', value: 13896 }, |
| { name: 'Range', value: 1594 }, |
| { name: 'StringUtil', value: 4130 }, |
| { name: 'Sum', value: 791 }, |
| { name: 'Variable', value: 1124 }, |
| { name: 'Variance', value: 1876 }, |
| { name: 'Xor', value: 1101 } |
| ] |
| }, |
| { |
| name: 'scale', |
| children: [ |
| { name: 'IScaleMap', value: 2105 }, |
| { name: 'LinearScale', value: 1316 }, |
| { name: 'LogScale', value: 3151 }, |
| { name: 'OrdinalScale', value: 3770 }, |
| { name: 'QuantileScale', value: 2435 }, |
| { name: 'QuantitativeScale', value: 4839 }, |
| { name: 'RootScale', value: 1756 }, |
| { name: 'Scale', value: 4268 }, |
| { name: 'ScaleType', value: 1821 }, |
| { name: 'TimeScale', value: 5833 } |
| ] |
| } |
| ] |
| }; |
| var data2 = { |
| name: 'flare', |
| children: [ |
| { |
| name: 'flex', |
| children: [{ name: 'FlareVis', value: 4116 }] |
| }, |
| { |
| name: 'scale', |
| children: [ |
| { name: 'IScaleMap', value: 2105 }, |
| { name: 'LinearScale', value: 1316 }, |
| { name: 'LogScale', value: 3151 }, |
| { name: 'OrdinalScale', value: 3770 }, |
| { name: 'QuantileScale', value: 2435 }, |
| { name: 'QuantitativeScale', value: 4839 }, |
| { name: 'RootScale', value: 1756 }, |
| { name: 'Scale', value: 4268 }, |
| { name: 'ScaleType', value: 1821 }, |
| { name: 'TimeScale', value: 5833 } |
| ] |
| }, |
| { |
| name: 'display', |
| children: [{ name: 'DirtySprite', value: 8833 }] |
| } |
| ] |
| }; |
| myChart.hideLoading(); |
| myChart.setOption( |
| (option = { |
| tooltip: { |
| trigger: 'item', |
| triggerOn: 'mousemove' |
| }, |
| legend: { |
| top: '2%', |
| left: '3%', |
| orient: 'vertical', |
| data: [ |
| { |
| name: 'tree1', |
| icon: 'rectangle' |
| }, |
| { |
| name: 'tree2', |
| icon: 'rectangle' |
| } |
| ], |
| borderColor: '#c23531' |
| }, |
| series: [ |
| { |
| type: 'tree', |
| name: 'tree1', |
| data: [data], |
| top: '5%', |
| left: '7%', |
| bottom: '2%', |
| right: '60%', |
| symbolSize: 7, |
| label: { |
| position: 'left', |
| verticalAlign: 'middle', |
| align: 'right' |
| }, |
| leaves: { |
| label: { |
| position: 'right', |
| verticalAlign: 'middle', |
| align: 'left' |
| } |
| }, |
| emphasis: { |
| focus: 'descendant' |
| }, |
| expandAndCollapse: true, |
| animationDuration: 550, |
| animationDurationUpdate: 750 |
| }, |
| { |
| type: 'tree', |
| name: 'tree2', |
| data: [data2], |
| top: '20%', |
| left: '60%', |
| bottom: '22%', |
| right: '18%', |
| symbolSize: 7, |
| label: { |
| position: 'left', |
| verticalAlign: 'middle', |
| align: 'right' |
| }, |
| leaves: { |
| label: { |
| position: 'right', |
| verticalAlign: 'middle', |
| align: 'left' |
| } |
| }, |
| expandAndCollapse: true, |
| emphasis: { |
| focus: 'descendant' |
| }, |
| animationDuration: 550, |
| animationDurationUpdate: 750 |
| } |
| ] |
| }) |
| ); |
| |
| if (option && typeof option === 'object') { |
| myChart.setOption(option); |
| } |
| |
| window.addEventListener('resize', myChart.resize); |
| </script> |
| </body> |
| </html> |
查看详情

案例2
| |
| |
| |
| <!DOCTYPE html> |
| <html lang="en" style="height: 100%"> |
| <head> |
| <meta charset="utf-8"> |
| </head> |
| <body style="height: 100%; margin: 0"> |
| <div id="container" style="height: 100%"></div> |
| |
| <script type="text/javascript" src="https://cdn.staticfile.org/jquery/3.7.1/jquery.min.js"></script> |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/echarts.min.js"></script> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <script type="text/javascript"> |
| var dom = document.getElementById('container'); |
| var myChart = echarts.init(dom, null, { |
| renderer: 'canvas', |
| useDirtyRect: false |
| }); |
| var app = {}; |
| |
| var option; |
| |
| |
| |
| $.get('flare.json', function (data) { |
| |
| data.children.forEach(function (datum, index) { |
| index % 2 === 0 && (datum.collapsed = true); |
| }); |
| myChart.setOption( |
| (option = { |
| tooltip: { |
| trigger: 'item', |
| triggerOn: 'mousemove' |
| }, |
| series: [ |
| { |
| type: 'tree', |
| data: [data], |
| top: '1%', |
| left: '7%', |
| bottom: '1%', |
| right: '20%', |
| symbolSize: 7, |
| label: { |
| position: 'left', |
| verticalAlign: 'middle', |
| align: 'right', |
| fontSize: 9 |
| }, |
| leaves: { |
| label: { |
| position: 'right', |
| verticalAlign: 'middle', |
| align: 'left' |
| } |
| }, |
| emphasis: { |
| focus: 'descendant' |
| }, |
| expandAndCollapse: true, |
| animationDuration: 550, |
| animationDurationUpdate: 750 |
| } |
| ] |
| }) |
| ); |
| }); |
| |
| if (option && typeof option === 'object') { |
| myChart.setOption(option); |
| } |
| |
| window.addEventListener('resize', myChart.resize); |
| </script> |
| </body> |
| </html> |
点击查看代码

案例3
| <!-- |
| 此示例下载自 https://echarts.apache.org/examples/zh/editor.html?c=tree-polyline |
| --> |
| <!DOCTYPE html> |
| <html lang="en" style="height: 100%"> |
| <head> |
| <meta charset="utf-8"> |
| </head> |
| <body style="height: 100%; margin: 0"> |
| <div id="container" style="height: 100%"></div> |
| |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/echarts.min.js"></script> |
| <!-- Uncomment this line if you want to dataTool extension |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/extension/dataTool.min.js"></script> |
| --> |
| <!-- Uncomment this line if you want to use gl extension |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts-gl/2/files/dist/echarts-gl.min.js"></script> |
| --> |
| <!-- Uncomment this line if you want to echarts-stat extension |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts-stat/latest/files/dist/ecStat.min.js"></script> |
| --> |
| <!-- Uncomment this line if you want to use map |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/4.9.0/files/map/js/china.js"></script> |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/4.9.0/files/map/js/world.js"></script> |
| --> |
| <!-- Uncomment these two lines if you want to use bmap extension |
| <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_API_KEY"></script> |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/extension/bmap.min.js"></script> |
| --> |
| |
| <script type="text/javascript"> |
| var dom = document.getElementById('container'); |
| var myChart = echarts.init(dom, null, { |
| renderer: 'canvas', |
| useDirtyRect: false |
| }); |
| var app = {}; |
| |
| var option; |
| |
| const data = { |
| name: 'flare', |
| children: [ |
| { |
| name: 'data', |
| children: [ |
| { |
| name: 'converters', |
| children: [ |
| { name: 'Converters', value: 721 }, |
| { name: 'DelimitedTextConverter', value: 4294 } |
| ] |
| }, |
| { |
| name: 'DataUtil', |
| value: 3322 |
| } |
| ] |
| }, |
| { |
| name: 'display', |
| children: [ |
| { name: 'DirtySprite', value: 8833 }, |
| { name: 'LineSprite', value: 1732 }, |
| { name: 'RectSprite', value: 3623 } |
| ] |
| }, |
| { |
| name: 'flex', |
| children: [{ name: 'FlareVis', value: 4116 }] |
| }, |
| { |
| name: 'query', |
| children: [ |
| { name: 'AggregateExpression', value: 1616 }, |
| { name: 'And', value: 1027 }, |
| { name: 'Arithmetic', value: 3891 }, |
| { name: 'Average', value: 891 }, |
| { name: 'BinaryExpression', value: 2893 }, |
| { name: 'Comparison', value: 5103 }, |
| { name: 'CompositeExpression', value: 3677 }, |
| { name: 'Count', value: 781 }, |
| { name: 'DateUtil', value: 4141 }, |
| { name: 'Distinct', value: 933 }, |
| { name: 'Expression', value: 5130 }, |
| { name: 'ExpressionIterator', value: 3617 }, |
| { name: 'Fn', value: 3240 }, |
| { name: 'If', value: 2732 }, |
| { name: 'IsA', value: 2039 }, |
| { name: 'Literal', value: 1214 }, |
| { name: 'Match', value: 3748 }, |
| { name: 'Maximum', value: 843 }, |
| { |
| name: 'methods', |
| children: [ |
| { name: 'add', value: 593 }, |
| { name: 'and', value: 330 }, |
| { name: 'average', value: 287 }, |
| { name: 'count', value: 277 }, |
| { name: 'distinct', value: 292 }, |
| { name: 'div', value: 595 }, |
| { name: 'eq', value: 594 }, |
| { name: 'fn', value: 460 }, |
| { name: 'gt', value: 603 }, |
| { name: 'gte', value: 625 }, |
| { name: 'iff', value: 748 }, |
| { name: 'isa', value: 461 }, |
| { name: 'lt', value: 597 }, |
| { name: 'lte', value: 619 }, |
| { name: 'max', value: 283 }, |
| { name: 'min', value: 283 }, |
| { name: 'mod', value: 591 }, |
| { name: 'mul', value: 603 }, |
| { name: 'neq', value: 599 }, |
| { name: 'not', value: 386 }, |
| { name: 'or', value: 323 }, |
| { name: 'orderby', value: 307 }, |
| { name: 'range', value: 772 }, |
| { name: 'select', value: 296 }, |
| { name: 'stddev', value: 363 }, |
| { name: 'sub', value: 600 }, |
| { name: 'sum', value: 280 }, |
| { name: 'update', value: 307 }, |
| { name: 'variance', value: 335 }, |
| { name: 'where', value: 299 }, |
| { name: 'xor', value: 354 }, |
| { name: 'x_x', value: 264 } |
| ] |
| }, |
| { name: 'Minimum', value: 843 }, |
| { name: 'Not', value: 1554 }, |
| { name: 'Or', value: 970 }, |
| { name: 'Query', value: 13896 }, |
| { name: 'Range', value: 1594 }, |
| { name: 'StringUtil', value: 4130 }, |
| { name: 'Sum', value: 791 }, |
| { name: 'Variable', value: 1124 }, |
| { name: 'Variance', value: 1876 }, |
| { name: 'Xor', value: 1101 } |
| ] |
| }, |
| { |
| name: 'scale', |
| children: [ |
| { name: 'IScaleMap', value: 2105 }, |
| { name: 'LinearScale', value: 1316 }, |
| { name: 'LogScale', value: 3151 }, |
| { name: 'OrdinalScale', value: 3770 }, |
| { name: 'QuantileScale', value: 2435 }, |
| { name: 'QuantitativeScale', value: 4839 }, |
| { name: 'RootScale', value: 1756 }, |
| { name: 'Scale', value: 4268 }, |
| { name: 'ScaleType', value: 1821 }, |
| { name: 'TimeScale', value: 5833 } |
| ] |
| } |
| ] |
| }; |
| option = { |
| tooltip: { |
| trigger: 'item', |
| triggerOn: 'mousemove' |
| }, |
| series: [ |
| { |
| type: 'tree', |
| id: 0, |
| name: 'tree1', |
| data: [data], |
| top: '10%', |
| left: '8%', |
| bottom: '22%', |
| right: '20%', |
| symbolSize: 7, |
| edgeShape: 'polyline', |
| edgeForkPosition: '63%', |
| initialTreeDepth: 3, |
| lineStyle: { |
| width: 2 |
| }, |
| label: { |
| backgroundColor: '#fff', |
| position: 'left', |
| verticalAlign: 'middle', |
| align: 'right' |
| }, |
| leaves: { |
| label: { |
| position: 'right', |
| verticalAlign: 'middle', |
| align: 'left' |
| } |
| }, |
| emphasis: { |
| focus: 'descendant' |
| }, |
| expandAndCollapse: true, |
| animationDuration: 550, |
| animationDurationUpdate: 750 |
| } |
| ] |
| }; |
| |
| if (option && typeof option === 'object') { |
| myChart.setOption(option); |
| } |
| |
| window.addEventListener('resize', myChart.resize); |
| </script> |
| </body> |
| </html> |
点击查看代码

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?