可視化框架echart
ECharts,一個使用 JavaScript 實現的開源可視化庫,可以流暢的運行在 PC 和移動設備上,兼容當前絕大部分瀏覽器(IE8/9/10/11,Chrome,Firefox,Safari等),底層依賴矢量圖形庫 ZRender,提供直觀,交互豐富,可高度個性化定制的數據可視化圖表。
它提供了常規的折線圖、柱狀圖、散點圖、餅圖、K線圖,用於統計的盒形圖,用於地理數據可視化的地圖、熱力圖、線圖,用於關系數據可視化的關系圖、treemap、旭日圖,多維數據可視化的平行坐標,還有用於 BI 的漏斗圖,儀表盤,並且支持圖與圖之間的混搭。
你可以在下載界面下載包含所有圖表的構建文件,如果只是需要其中一兩個圖表,又嫌包含所有圖表的構建文件太大,也可以在在線構建中選擇需要的圖表類型后自定義構建。
編輯器
word其實就是編輯器,ppt也是,不同的編輯器可以產生不同類型的文件。在這里,我們需要的是產生網頁文件的編輯器,即我們需要產生.html后綴的文件,所以推薦一個輕量級編輯器Sublime,http://www.sublimetext.com/。根據你的電腦系統來選擇相應的安裝包安裝,具體使用方法可以參考官網的教程。
框架的使用方法
首先要明確的是,我們需要的插圖是由網頁的形式在瀏覽器中呈現的,所以需要在編輯器中編寫代碼,保存成html文件,接着在瀏覽器中打開。幸運的是,框架已經為我們寫好了大多數生成圖表的代碼,我們只需要修改其中的設置並讀入我們的數據,就可以輕松制作出新穎又好看的圖表。下面就用世界地圖和餅狀圖來說明該框架的使用方法
上圖是最終的效果圖,制作該圖片分為兩個步驟:
使用echart.js生成世界地圖和餅狀圖
世界地圖:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Awesome-pyecharts</title> <!-- 下面兩行的意思是,瀏覽器從網絡上獲取echart包,而不需要你配置任何編程環境 --> <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script> <script type="text/javascript" src="https://assets.pyecharts.org/assets/maps/world.js"></script> </head> <body> <!-- div標簽表示一個塊,它是我們的圖片容器。所以屬性style里 寬度和高度是可以自定義的,1800px代表1800像素,塊的寬度和高度於生成圖片的尺寸相關,在下面的餅狀圖中則同理。--> <div id="container" class="chart-container" style="width:1800px; height:1200px;"></div> <script> // 所有的腳本代碼都寫在script標簽里 var chart_container = echarts.init( document.getElementById('container'), 'white', {renderer: 'canvas'}); // var option代表定義一個名為option的變量,后面花括號里的代表我們需要作圖的參數設置 var option_container = { // 默認的顏色數組 (如果不明確設置每個數據項的顏色,則會采用默認的數組 // 此處的顏色為十六進制表示,也可以使用rgb來表示。簡單地理解就是一串字符就代表一個顏色,挑選喜歡的顏色可以自行搜索顏色 "color": ["#ac6767","#1d953f","#6950a1","#918597"], "series": [ { // 圖標類型為 地圖 "type": "map", "name": "test", "label": { "show": false, "position": "top", "margin": 8 }, "mapType": "world", // 地圖類型為 世界地圖 // data里的每一個{}中,是一項數據整體,標明了該項數據的名稱,值,以及顏色等參數。注意:此處的字符串需要加雙引號""(輸入法切換至英文狀態) "data": [ { // ItemStyle 中設置每一個數據項的顏色 "name": "United States", "value": 43, 'itemStyle':{'color':"#c23531"} }, { "name": "Japan","value": 17, // 注意項與項之間的逗號 'itemStyle':{'color':"#CD8500"} }, { "name": "France","value": 7, 'itemStyle':{'color':"#EE2C2C"} }, { "name": "Italy","value": 6, 'itemStyle':{'color':"#918597"} }, { "name": "Canada","value": 5, 'itemStyle':{'color':"#bda29a"} }, { "name": "United Kingdom","value": 4, 'itemStyle':{'color':"#6950a1"} }, { "name": "Spain","value": 4, 'itemStyle':{'color':"#1d953f"} }, { "name": "Holland","value": 4, 'itemStyle':{'color':"#2f4554"} }, { "name": "Belgium","value": 3, 'itemStyle':{'color':"#EEAD0E"} } , { "name": "Germany","value": 2, 'itemStyle':{'color':"#607B8B"} }, { "name": "Austria","value": 2, 'itemStyle':{'color':"#5CACEE"} }, { "name": "Switzerland","value": 1, 'itemStyle':{'color':"#4EEE94"} }, { "name": "Poland","value": 1, 'itemStyle':{'color':"#8DEEEE"} }, { "name": "Chile","value": 1, 'itemStyle':{'color':"#B23AEE"} }, ], "roam": true, "zoom": 1, // 去除各個國家上的小紅點 "showLegendSymbol": false, } ], // 鼠標懸浮,單擊產生的效果(在網頁上可以動態顯示) "tooltip": { "show": true, "trigger": "item", "triggerOn": "mousemove|click", "axisPointer": { "type": "line" }, "textStyle": { "fontSize": 14 }, "borderWidth": 0 } }; chart_container.setOption(option_container); </script> </body> </html>
餅狀圖代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Awesome-pyecharts</title> <script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script> <script type="text/javascript" src="https://assets.pyecharts.org/assets/maps/world.js"></script> </head> <body> <div id="container" class="chart-container" style="width:1200px; height:800px;"></div> <script> var chart_container = echarts.init( document.getElementById('container'), 'white', {renderer: 'canvas'}); var option_container = { title: { text: 'No. of papers', left: 'center' }, legend: { orient: 'vertical', left: 'left', // 圖例數據 data: ['United States', 'Japan', 'France', 'Italy', 'Canada', 'England', 'Spain', 'Holland', 'Belgium', 'Germany', 'Austria', 'Switzerland', 'Poland', 'Chile'], // 設置圖例的文字樣式 textStyle:{ fontWeight:'bold', // 字型粗細 fontSize:'20', // 文字大小 fontFamily:'Times New Roman' //字體 } }, series: [ { name: '', type: 'pie', // 圖的類型為餅圖 radius: '55%', // 餅圖半徑 clockwise:true, // 順時針排列各項數據 center: ['50%', '60%'], //餅圖的中心坐標 // 餅圖中數據項標簽設置 label:{ show:true, position:'outside', // 格式設置 詳細請看:www.echartsjs.com/zh/option.html#series-pie.label.formatter formatter: '{a} {b} : {c} ({d}%)', fontWeight:'bold', fontSize:'20', fontFamily:'Times New Roman' }, // ItemStyle 中設置每一個數據項的顏色 data: [ {value: 43, name: 'United States',itemStyle:{color:'#c23531'}}, {value: 17, name: 'Japan',itemStyle:{color:'#CD8500'}}, {value: 7, name: 'France',itemStyle:{color:'#EE2C2C'}}, {value: 6, name: 'Italy',itemStyle:{color:'#918597'}}, {value: 5, name: 'Canada',itemStyle:{color:'#bda29a'}}, {value: 4, name: 'England',itemStyle:{color:'#6950a1'}}, {value: 4, name: 'Spain',itemStyle:{color:'#1d953f'}}, {value: 4, name: 'Holland',itemStyle:{color:'#2f4554'}}, {value: 3, name: 'Belgium',itemStyle:{color:'#EEAD0E'}}, {value: 2, name: 'Germany',itemStyle:{color:'#607B8B'}}, {value: 2, name: 'Austria',itemStyle:{color:'#5CACEE'}}, {value: 1, name: 'Switzerland',itemStyle:{color:'#4EEE94'}}, {value: 1, name: 'Poland',itemStyle:{color:'#8DEEEE'}}, {value: 1, name: 'Chile',itemStyle:{color:'#B23AEE'}}, ], emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }; chart_container.setOption(option_container); </script> </body> </html>
接下來的步驟與上面的世界地圖操作相同,最后保存餅狀圖片。
將世界地圖和餅狀圖拼接為一張圖片
該步驟使用了ps,具體步驟是:
此處寬度和高度可以自定義,一般一開始可以設置大一點,到后面生成圖片之前進行裁剪
接着把兩張圖片拖入畫布中,調整大小與位置,再將兩個圖層柵格化,最后文件另存為.jpg文件,整個過程結束。
關於echart.js的詳細信息或其它類型的圖片可以參考:https://www.echartsjs.com/zh/index.html