可视化做的好,直接提升获奖概率!可视化操作方法or代码模板一定要赛前准备好。

参考资源

Apache ECharts
兼容 IE6+、完美支持移动端、图表类型丰富的 HTML5 交互图表 | Highcharts
AntV | 蚂蚁数据可视化
简介 - pyecharts - A Python Echarts Plotting Library built with love.
Flourish | Data Visualization & Storytelling
FineBI商业智能软件 - 新一代自助大数据分析的BI工具
Plotly: The front end for ML and data science models

不能错过的六大在线画图网站dally2的博客-CSDN博客画图网站
在线可视化工具网站,让你做出漂亮的图表 | 设计达人(思路)
想做出漂亮的图表,这12个网站不能错过! - 设计文章 - 站酷(ZCOOL)
可视化工具Plotly
Plotly基础教程_周先森爱吃素的博客-CSDN博客_plotly

图之典
From data to Viz | Find the graphic you need(参考代码)

优秀资源
Highcharts ECharts 图之典 AntV From data to Viz 学习了解优秀图表
matplotlib实现

image.png

GitHub - Financial-Times/chart-doctor: Sample files to accompany the FT’s Chart Doctor column
image.png
poster.png

Matplotlib

Matplotlib 中文
matplotlib.axes — Matplotlib 3.4.3 documentation

显示中文、负号
解决matplotlib中文和负号显示为方框的问题_wolf1132的博客-CSDN博客

  1. %matplotlib inline
  2. import matplotlib.pyplot as plt
  3. plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
  4. plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

关于fig ax
matplotlib学习:搞明白plt. /ax./ fig - 薄书 - 博客园
matplotlib:先搞明白plt. /ax./ fig再画 - 知乎(仅看评论内容)
Matplotlib中的plt和ax都是啥?-技术圈
Matplotlib画图中fig,ax,plt的区别和联系 - 知乎
python 可视化:fig, ax = plt.subplots()画多表图的3中常见样例 & 自定义图表格式htuhxf的博客-CSDN博客

设置格式
设置y轴刻度Matplotlib最详细的刻度调整南辰以北的博客-CSDN博客(参考)
matplotlib ax 与 刻度相关函数 - 刘瀚阳 - 博客园

pyecharts

文档:简介 - pyecharts - A Python Echarts Plotting Library built with love.
示例:中文简介 - Document

百度地图 BMap
柱状图 Bar(其他软件)
Bar-旋转X轴标签Bar - Bar_rotate_xaxis_label
Bar-堆叠数据(全部)Bar - Bar_stack0
mixed_bar_and_lineBar - Mixed_bar_and_line
。。。
3D 柱状图 Bar3D
箱形图 Boxplot(其他软件)
日历图 Calendar
K 线图 Candlestick
数据集 Dataset
涟漪散点图 EffectScatter
漏斗图 Funnel
仪表盘 Gauge
地理坐标 Geo
关系图 Graph
热力图 Heatmap
折线图 Line
水球图 Liquid
地图 Map
3D 地图 Map3D
Globe 地图 MapGlobe
平行坐标系 Parallel
象型柱图 PictorialBar
饼状图 Pie
极坐标系 Polar
雷达图 Radar
桑基图 Sankey
散点图 Scatter
树图 Tree
矩形树图 Treemap
词云图 WordCloud

Origin

Origin科研绘图超快速上手指南_哔哩哔哩_bilibili

层次

  • 底层:画布
  • 中间层:坐标系
  • 顶层:图线(折线 散点 柱状图)

origin绘图步骤总结:
1.打开origin,新建工程 文件 - 保存项目
2.创建book,导入数据 点击Book1重命名数据表;复制数据
3.创建graph,设置画布尺寸 image.png 双击白色修改尺寸
4.添加坐标系,设置位置尺寸 白色区域右键 - 新图层(轴) - 第一个
5.绘制图线 图 - 图表绘制 - 展开image.png - 可用数据:当前项目中的工作表 。。。
6.设置坐标轴格式 坐标轴刻度;坐标轴标签(一列文本);标题 - 上轴;网格;坐标轴粗细长度;。。。
7.设置线格式 双击图线
8.设置标题格式 右键编辑
9.添加并设置图例 image.png 右键 - 属性
10.保存工程,导出图片 文件 - 导出图形

折线图

Matlab

Matlab绘图控制命令 - wenglabs - 博客园
(1)LineStyle:线形
(2)LineWidth:线宽
(3)Color:颜色
(4)MarkerType:标记点的形状
(5)MarkerSize:标记点的大小
(6)MarkerFaceColor:标记点内部的填充颜色
(7)MarkerEdgeColor:标记点边缘的颜色
更多颜色见:MatlabRGB颜色对照表(0-1之间取值).pdf
image.png
D:\00000MCM\0 codes\2020B\mydisplay.m

  1. clear
  2. clc
  3. data1 = [89.5753689417091,88.5430475920727,88.7109684597890,88.1888882774200,88.0168526117891,87.5428139437193,87.7453080213814,87.3972579019283,87.8106309660751,88.8763731648226];
  4. data2 = [88.3500000000000,88.6500000000000,88.4500000000000,88.6500000000000,88.2500000000000,88.0500000000000,87.9500000000000,88.0500000000000,88.1200000000000,88.6500000000000];
  5. figure(1)
  6. % % X可省
  7. % % plot(X, Y, '线条标记控制, 'Color', [0 0.60 1], 'linewidth', 1.5, 'MarkerSize', 15)
  8. % Color
  9. % 橘色 [1 0.5 0] 255,129,19 -> [1, 0.506, 0.075] plt配色
  10. % 青蓝 [0 0.67 1] 45,128,185 -> [0.176, 0.502, 0.725] plt配色
  11. % 线条标记控制中 r g b 洋红 m 青绿色 c
  12. X = 1:size(data1, 2);
  13. % plot(X, data1, '-r', 'linewidth', 1.5, 'MarkerSize', 10) % 默认可能为深蓝色
  14. % 配色方案1
  15. plot(X, data1, '-o', 'Color', [1, 0.506, 0.075], 'linewidth', 1.5, 'MarkerSize', 10) % 橘色
  16. hold on
  17. plot(data2 + 0, '-*', 'Color', [0.176, 0.502, 0.725], 'linewidth', 1.5, 'MarkerSize', 10); % 青蓝
  18. % 配色方案2
  19. % plot(X, data1, '-ro', 'linewidth', 1, 'MarkerSize', 10) % 红色
  20. % hold on
  21. % plot(data2 + 0, '-b*', 'linewidth', 1, 'MarkerSize', 10); % 蓝色 (虚线--)
  22. % % 渐变
  23. % plot(data2 + 0, '-o', 'Color', [0.67843 0.84706 0.90196], 'linewidth', 1.5, 'MarkerSize', 10);
  24. % plot(data2 + 1, '-o', 'Color', [0.68627 0.93333 0.93333], 'linewidth', 1.5, 'MarkerSize', 10);
  25. % plot(data2 + 2, '-o', 'Color', [0.52941 0.80784 0.98039], 'linewidth', 1.5, 'MarkerSize', 10);
  26. % plot(data2 + 3, '-o', 'Color', [0.11765 0.56471 1], 'linewidth', 1.5, 'MarkerSize', 10);
  27. % plot(data2 + 4, '-o', 'Color', [0.2549 0.41176 0.88235], 'linewidth', 1.5, 'MarkerSize', 10);
  28. legend('legend1', 'legend2') % 。。。。。。
  29. title('title')
  30. ylabel('ylabel')
  31. xlabel('xlabel')
  32. % axis([-inf inf, -inf inf])

Python

plt参考
01 散点图 · 语雀matplotlib中 plt.plot() 函数中**kwargs的参数形式 - 帅帅的飞猪 - 博客园(参考)
python画图(标记、marker、设置标记大小、marker符号大全)(图文详细入门教程五) - mr_qccc - 博客园
color: 颜色
linestyle: 线条样式
marker: 标记风格
markerfacecolor: 标记颜色
markersize: 标记大小
image.png

D:\00000py\1\mcm mydisplay.py

  1. import numpy as np
  2. import pandas as pd
  3. import matplotlib.pyplot as plt
  4. plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
  5. # 数据
  6. data1 = [89.5753689417091,88.5430475920727,88.7109684597890,88.1888882774200,88.0168526117891,87.5428139437193,87.7453080213814,87.3972579019283,87.8106309660751,88.8763731648226]
  7. data2 = [88.3500000000000,88.6500000000000,88.4500000000000,88.6500000000000,88.2500000000000,88.0500000000000,87.9500000000000,88.0500000000000,88.1200000000000,88.6500000000000]
  8. plt.plot(data1, marker='X', markersize=10) # 最简单画法
  9. pltxx = range(len(data1))
  10. plt.plot(pltxx, data2, linestyle='-', linewidth=2, marker='.', markersize=14) # 标准画法 label=‘label’
  11. # 装饰
  12. #plt.gca() 获取当前的子图,如果当前没有任何子图的话,就帮我创建一个新的子图
  13. plt.gca().set(xlim=(-1, 10), ylim=(87, 90)) #控制横纵坐标的范围 (确定范围 midwest["area"].max() ......)
  14. plt.xticks(fontsize=12) #坐标轴上的标尺的字的大小
  15. plt.yticks(fontsize=12)
  16. plt.ylabel('ylabel', fontsize=12) #坐标轴上的标题和字体大小
  17. plt.xlabel('xlabel', fontsize=12)
  18. plt.title("title", fontsize=14) #整个图像的标题和字体的大小
  19. plt.legend(['data1', 'data2'], fontsize=12, loc=0) #图例的字体大小 loc图例位置0 - 10
  20. # plt.legend(fontsize=12, loc=0)
  21. # plt.grid() # 添加网格
  22. # plt.savefig("./datasets/1111.jpg",dpi = 300)
  23. plt.show()

t-SNE降维

可视化聚类结果
展示数据变化 (颜色变化 散点图 三维变化图)

文章:
2020B 0031

Python

可以实现数据变化 (颜色变化散点图 三维变化图)
知识干货-机器学习-TSNE数据降维 - 知乎

D:\00000py\1\mcm tsne_display.py

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import xlrd
  4. from sklearn.preprocessing import MinMaxScaler
  5. from sklearn.manifold import TSNE
  6. from mpl_toolkits.mplot3d import Axes3D
  7. # 缩放数据到[0, 1]
  8. def scale(data):
  9. minmax = MinMaxScaler()
  10. data = minmax.fit_transform(data)
  11. # print(input_reframed)
  12. # np.savetxt('Smin_', minmax.min_)
  13. # np.savetxt('Sscale_', minmax.scale_)
  14. # print(minmax.scale_)
  15. # print(minmax.min_)
  16. return data, minmax.scale_[-1], minmax.min_[-1]
  17. # 读取数据
  18. data = xlrd.open_workbook(r'D:\00000MCM\0 codes\2020B\q3.xlsx') # datas q2xxhg
  19. # 转为ndarray
  20. table = data.sheet_by_index(0) #按索引获取工作表,0就是工作表1
  21. resArray = []
  22. for i in range(1, table.nrows): #table.nrows表示总行数 去除第一行
  23. line=table.row_values(i) #读取每行数据,保存在line里面,line是list
  24. resArray.append(line) #将line加入到resArray中,resArray是二维list
  25. resArray = np.array(resArray) #将resArray从二维list变成数组
  26. data = resArray # 列数据
  27. S = data[:, 0] # 列数据 硫含量
  28. X = data[:, 1] # 列数据 辛烷值
  29. data = data[:, 2:] # 列数据
  30. tsnedim2 = TSNE(n_components=2,learning_rate=0.1).fit_transform(data) # 降维到两个变量
  31. tsne_1 = tsnedim2[:, 0]
  32. tsne_2 = tsnedim2[:, 1]
  33. tsne_1 = np.sort(tsne_1) # 排序
  34. tsne_2 = np.sort(tsne_2)
  35. S_temp, S_a, S_b = scale(S.reshape(-1,1)) # 缩放数据到[0, 1]直接浮点数 展示颜色用
  36. X_temp, X_a, X_b = scale(X.reshape(-1,1))
  37. # 颜色变化散点图
  38. plt.scatter(tsne_1, tsne_2, c=np.rint(X_temp * 255)) # 放大到255 [0,1]仅两个颜色
  39. plt.colorbar() # 颜色条
  40. plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
  41. # plt.savefig("scaxinwan.svg", format="svg")
  42. # plt.savefig("scaxinwan.png", format="png")
  43. plt.show()
  44. # plt.scatter(tsne_1, tsne_2, c=np.rint(S_temp * 256))
  45. # plt.colorbar()
  46. # plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
  47. # # plt.savefig("scaxinwan.svg", format="svg")
  48. # # plt.savefig("scaxinwan.png", format="png")
  49. # plt.show()
  50. # 单一颜色 变化图 三维(高度为数据)
  51. fig = plt.figure()
  52. ax = Axes3D(fig)
  53. ax.scatter(tsne_1, tsne_2, X, c='g')
  54. # ax.set_zlabel('辛烷值 ') # 坐标轴 坐标轴
  55. # ax.set_ylabel('Y')
  56. # ax.set_xlabel('X')
  57. plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
  58. # plt.savefig("3Dxinwan.svg", format="svg")
  59. # plt.savefig("3Dxinwan.png", format="png")
  60. plt.show()
  61. #########################################################################
  62. # 三维test
  63. tsnedim3 = TSNE(n_components=3,learning_rate=0.1).fit_transform(data) # 降维到两个变量
  64. tsne31 = tsnedim3[:, 0]
  65. tsne32 = tsnedim3[:, 1]
  66. tsne33 = tsnedim3[:, 2]
  67. # tsne_1 = np.sort(tsne_1) # 排序
  68. # tsne_2 = np.sort(tsne_2)
  69. # 变化图 三维(高度为数据)
  70. fig = plt.figure()
  71. ax = Axes3D(fig)
  72. ax.scatter(tsne31, tsne32, tsne33, c=S) # c='g' S S_temp均可
  73. # ax.set_zlabel('辛烷值 ') # 坐标轴 坐标轴
  74. # ax.set_ylabel('Y')
  75. # ax.set_xlabel('X')
  76. # plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
  77. # plt.savefig("3Dxinwan.svg", format="svg")
  78. # plt.savefig("3Dxinwan.png", format="png")
  79. plt.show()

Matlab

可视化利器 t-SNE(matlab)——用于高维数据的自动降维和绘图_Limber的博客-CSDN博客_matlab tsne(参考)
t-Distributed Stochastic Neighbor Embedding - MATLAB tsne - MathWorks 中国
tsne Settings - MATLAB & Simulink - MathWorks 中国(无效)
参考文档 D:\00000MCM\0 codes\2020B\User_guide.pdf

三维散点图 - MATLAB scatter3 - MathWorks 中国
matlab按颜色给散点图加图例 - 简书(参考 画三维图图例)

D:\00000MCM\0 codes\2020B\mytsne.m

  1. clear
  2. clc
  3. rng default % for reproducibility
  4. % load fisheriris
  5. load tsnedata
  6. % meas 150x4 double
  7. % species 150x1 cell
  8. % labels 150x1 double
  9. % 二维画图
  10. Y2 = tsne(meas);
  11. figure()
  12. gscatter(Y2(:,1), Y2(:,2), species) % 传入类别
  13. % 三维画图
  14. Y3 = tsne(meas, [], 3); % 聚类后坐标 = tsne(train_X, 无需标签[], 需要的维度no_dims, PCA维度initial_dims, perplexity);
  15. figure()
  16. scatter3(Y3(:,1), Y3(:,2), Y3(:,3), [], labels) % 传入颜色数值标签 scatter3(X,Y,Z,S,C) S大小 C颜色
  17. % 三维画图 图例需要单独绘制(循环未成功)
  18. figure()
  19. tmp1 = Y3(labels == 1, :);
  20. tmp2 = Y3(labels == 2, :);
  21. tmp3 = Y3(labels == 3, :);
  22. labels1 = ones(size(tmp1, 1), 1) * 1;
  23. labels2 = ones(size(tmp1, 1), 1) * 2;
  24. labels3 = ones(size(tmp1, 1), 1) * 3;
  25. h1 = scatter3(tmp1(:,1), tmp1(:,2), tmp1(:,3), [], labels1); hold on;
  26. h2 = scatter3(tmp2(:,1), tmp2(:,2), tmp2(:,3), [], labels2); hold on;
  27. h3 = scatter3(tmp3(:,1), tmp3(:,2), tmp3(:,3), [], labels3); hold on;
  28. legend([h1(1), h2(1), h3(1)], '函数1图例', '函数2图例', '函数3图例', 'location', 'northwest');

地图

Python

folium库:
Python地图可视化:folium绘制轨迹 - Shaw_喆宇 - 博客园
Python地图可视化:folium绘制轨迹 - 码农教程

Python绘制地图神器folium入门_hustanding-CSDN博客_folium
地图可视化组件–folium简单介绍_AIHUBEI的博客-CSDN博客
folium库的使用 - 知乎
folium:地图数据可视化库 | 码农网
python:folium库实现地图可视化_honely-hermit的博客-CSDN博客

其他方法:
多个经纬度地点数据,如何同时在地图上标注出来(路径显示) - Feyn - 博客园
百度地图根据经纬度绘制轨迹鱿鱼的博客-CSDN博客百度地图绘制轨迹(html)
根据经纬度坐标值在百度地图上绘制轨迹_LFW的博客-CSDN博客(html)
百度地图根据点绘制轨迹_拒绝成猿的程序员-CSDN博客(html)

实现:偏差修正 画线 圆圈 标记
D:\00000py\1\mcm foliumtestjupyter.ipynb

  1. %matplotlib inline
  2. import pandas as pd
  3. import numpy as np
  4. import folium
  5. import webbrowser
  6. data1 = pd.read_excel(r'D:\00000py\1\datasets\2019d\folium.xlsx')
  7. data1_pd = pd.DataFrame(data1) # DataFrame->DataFrame
  8. data1_np = np.array(data1_pd) # DataFrame->ndarray
  9. # # 取出经纬度
  10. # data1_list = data1_np.tolist() # ndarray->list
  11. # j = data1_np[:, 5]
  12. # w = data1_np[:, 6]
  13. # 取出经纬度 (采用)
  14. jw = data1_np[:, [6, 5]] # 取出经纬度
  15. # # 偏差修正 复杂方法
  16. # hang, lie = jw.shape
  17. # delta_ori = np.ones([hang, lie])
  18. # delta = np.asarray([0.11, -0.22]) # 偏差
  19. # y = delta_ori * delta
  20. # jwnew = jw + delta
  21. # 偏差修正 简单方法 (采用)
  22. delta = np.asarray([-0.0027, +0.0053]) # 偏差 (纬度, 经度)
  23. jwnew = jw + delta
  24. # tolist
  25. jwnew = jwnew.tolist()
  26. ## 初始化地图,指定固定座标 eg上海市[31.2389, 121.4992]
  27. m = folium.Map(
  28. location= jwnew[0], # [31.2389, 121.4992]
  29. zoom_start=12,
  30. tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}', # 高德街道图
  31. # tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
  32. # tiles='https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', # google 卫星图
  33. # tiles='https://mt.google.com/vt/lyrs=h&x={x}&y={y}&z={z}', # google 地图
  34. attr='default'
  35. )
  36. # 画线
  37. folium.PolyLine( # polyline方法为将坐标用虚线形式连接起来
  38. jwnew, # 将坐标点连接起来
  39. weight=3, # 线的大小为2
  40. color='red', # 线的颜色 蓝色 #00BFFF 查找表
  41. opacity=0.8, # 线的透明度
  42. # dash_array='5' # 虚线频率
  43. ).add_to(m) # 将这条线添加到刚才的区域m内
  44. # 圈 大小固定(采用) 多个点循环画图
  45. folium.Circle(
  46. location=jwnew[500], #圆圈中心的经纬度
  47. radius=400, # 圆的半径 单位为米(m)
  48. color='#BA55D3', #圈的颜色
  49. popup='popup',
  50. fill=True, #是否填充
  51. fill_color='#BA55D3', # 填充颜色
  52. fill_opacity=1.0 # 填充透明度 默认0.2
  53. ).add_to(m)
  54. # # 圆 大小随地图变化
  55. # folium.CircleMarker(
  56. # location=jwnew[1500],
  57. # radius=50,
  58. # popup='popup',
  59. # color='#DC143C', #圈的颜色
  60. # fill=True, #是否填充
  61. # fill_color='#6495ED' #填充颜色
  62. # ).add_to(m)
  63. # # 添加marker到地图
  64. # folium.Marker([31.2453,121.4857], popup='123', tooltip='tooltip',icon=folium.Icon(color='red')).add_to(m)
  65. # folium.Marker([31.2418,121.4953], popup='456', tooltip='tooltip',icon=folium.Icon(color='green',icon='info-sign')).add_to(m)
  66. # folium.Marker(jwnew[0], popup='123', tooltip='tooltip',icon=folium.Icon(color='red')).add_to(m)
  67. # folium.Marker(jwnew[1000], popup='456', tooltip='tooltip',icon=folium.Icon(color='green',icon='info-sign')).add_to(m)
  68. # 保存 打开
  69. m.save('f1.html')
  70. webbrowser.open('f1.html')

词云

WordArt.com - Word Cloud Art Creator
导入excel一列

  • 自动统计需要每个单元格无空格(可以先去除空格 后期再补上)

做关键词分析,我有4款免费词云工具 - 知乎(参考)
有哪些制作词云的工具? - 知乎