- ?
「数据分析」图表篇:散点图
佟梦岚
展开
图表对于数据分析师的作用是非常强大的。
图表是展示工作成果的利器,也是分析工作的精华。
字不如表,表不如图。
大概能代表了大部分的情况。
一、工具
新手做图表常用的工具:
百度echart
优点是配色比较好看。
Excel
基本可以完成大部分图表,操作难度这三者里最大。
Power BI
图表利器,配色的话一言难尽,建议自己下载配色方案。Mac用户需要装windows虚拟机。
二、常用图表
散点图的应用貌似并没有柱形图、饼图那么常见,
但散点图往往更能从大量的无规律数据中发现规律。
我们在拿到数据后,第一件事,就是要观察数据。
散点图就可以帮助我们做这件事。
单纯的散点图
这是一张最基础的散点图。由X轴、Y轴组成了单一象限,数据在象限中按坐标轴排列。
加入回归线的散点图
为了更好的看清楚数据规律,往往会在散点图中加入回归线。
回归线可以帮助我们更好的观察数据趋势。
下面介绍集中辅助线,可以根据业务需要添加。
带折线的散点图
带水平辅助线的散点图
带辅助坐标系的散点图
有时,还会增加散点图的维度。
三维散点图
在数据种类需要区分时,需要增加数据的维度。
按男、女分类数据的散点图
散点图与其他图结合使用,可以更直观的说明问题。
散点图+地图热力图
散点图+箱线图
散点图变种:气泡图
散点图应用
举了这么多散点图应用的案例,相信大家已经对散点图的应用有了一定的了解。之后会出如何制作散点图的教程。请多多关注支持哦~
- ?
用R语言做数据分析——R的四种图形系统
柯幼旋
展开
我们学习了各种各样的图形,它们大部分都是利用R语言的基础图形系统创建的。在R语言中,除了基础图形系统之外,R语言还提供了grid、lattice和ggplot2这三种图形系统,它们克服了R基础图形系统的低效性,大大扩展了的R语言的绘图能力。
grid图形系统可以很轻松地控制图形基础单元,给予编程者创作图形极大的灵活性。lattice包通过一维、二维或三维条件绘图来对多元变量关系进行直观展示。ggplot2包则基于一种全面的图形语法,提供了一种全新的图形创建方式。因为grid没有提供生成统计图形以及完整绘图的函数,因此数据分析师很少直接采用grid包来分析数据。这里重点介绍lattice和ggplot2图形系统。
四种图形系统的载入方式有所不同,基础图形函数可以自动调用,grid和lattice函数的调用必须要加载相应的包(library(lattice)),要调用ggplot2函数需要下载并安装该包(install.packages("ggplot2")),第一次使用还要引入加载该包(library(ggplot2))。
lattice包为单变量和多变量数据的可视化提供了一个全面的图形系统,它可以轻松生成栅栏图形。
在一个或多个其他变量的条件下,栅栏图形展示某个变量的分布或与其他变量间的关系。lattice包中singer数据集包含了合唱成员的身高和声部数据,让我们考虑以下问题:纽约合唱团歌手的身高随着他们所属的声部如何变化?来看以下代码:
>library(lattice)
> histogram(~height|voice.part, data=singer,main="Distribution of Heights by Voice Pitch", xlab="Height (inches)")
height是因变量,voice.part被称作条件变量,这段代码对八个声部的每一个都创建了一个直方图。图形显示了男高音和男低音比女低音和女高音身高要高。
在栅栏图形中,单个面板要依据条件变量的各个水平来创建。如果指定了多个条件变量,那么一个面板将按照各个因子水平的组合来创建。然后面板将被排成一个阵列以进行比较。每个面板在一个区域都会有一个标签,这里的区域称作条带区域。随后我们可以看到,用户可对每个面板中展示的图形、条带的格式和位置、面板的摆放、图例的内容和位置以及其他许多图形特征进行控制。
lattice包提供了丰富的函数,可生成单变量图形(点图、核密度图、直方图、柱状图和箱线图)、双变量图形(散点图、带状图和平行箱线图)和多变量图形(三维图和散点图矩阵)。
各种高级绘图函数都服从以下格式:
graph_function(formula, data=, options)
graph_function为图形类型函数;
formula指定要展示的变量和条件变量;
data指定一个数据框;
options是逗号分隔函数,用来修改图形的内容、摆放方式和标准。
lattice包中常见的图形类型函数如下:
lattice包中图形函数常见的配置选项如下:
设小写字母代表数值型变量,大写字母代表类别型变量(因子)。在高级绘图函数中,表达式形式通常为:
y ~ x | A * B
在竖线左边的变量称为主要变量,右边的变量称为条件变量。主要变量将变量映射到每个面板的坐标轴上,此处,y ~ x表示变量分别映射到纵轴和横轴上。对于单变量绘图,用~x代替y ~ x即可;对于三维图形,用z ~ x*y代替y ~ x,而对于多变量绘图(散点图矩阵或平行坐标图)用一个数据框代替y ~ x即可。注意,条件变量总是可以自行挑选的。
根据上述逻辑, ~ x | A即展示因子A各个水平下水平下数值型变量x的分布情况; y ~ x | A*B即展示因子A和B各个水平下组合下数值型变量x和y间的关系。而A ~ x则表示类别型变量A在纵轴上,数值型变量x在横轴上进行展示。 ~ x表示仅展示数值型变量x。
下面以数据框mtcar为例,我们使用以下代码进行lattice图形的绘制:
library(lattice)
attach(mtcars)
gear<- factor(gear, levels = c(3,4,5),labels = c("3 gears", "4 gears", "5 gears"))
cyl<- factor(cyl, levels = c(4,6,8), labels = c("4 cylinders","6 cylinders","8 cylinders"))
densityplot(~mpg,main="Density Plot", xlab = "Miles per Gallon")
densityplot(~mpg | cyl,main="Density Plot", xlab = "Miles per Gallon")
xyplot(mpg ~ wt | cyl * gear, main="Scatter Plots by Cylinders and Gears",xlab = "Car Weight",ylab = "Miles per Gallon")
cloud(mpg~wt*qsec | cyl, main="3D Scatter Plots by Cylinders")
dotplot(cyl ~ mpg | gear, main="Dot Plots by Number of Gears and Cylinders", xlab="Miles Per Gallon")
splom(mtcars[c(1,3,4,5,6)], main="Scatter Plot Matrix for mtcars Data")
detach(mtcars)
我们可以存储和操作lattice包中的高级绘图函数生成的图形。来看下列代码:
mygraph<- densityplot(~height | voice.part, data=singer)
plot(mygraph)
它创建了一个栅栏密度图,并存储在mygraph对象中。但是此时不会展示任何图形,只有调用plot(mygraph)或(mygraph)时才会展示图形。
我们可以通过options轻松地修改lattice图形对象,另外还可以使用update()函数来修改lattice对象,例如:
update(mygraph, col="red", pch=16, cex=.8, jitter=.05, lwd=2)
- ?
数据分析全流程(内附案例)
阻碍
展开
(图片来源于网络)
作者:苏格兰折耳喵
来源: 运营喵是怎样炼成的 (yymzylc)
(温馨提示:图片显示毛糙和不清楚,是分辨率过高的缘故,点击图片,即可看到高清大图。 )
本文将对一个案例进行从数据采集、数据清洗、数据分析再到数据可视化的全流程分析,力求条理清晰的展现外部数据分析的强大威力。以下是本文的写作框架:
1 分析背景
1.1 分析原理---为什么选择分析虎嗅网
在现今数据爆炸、信息质量良莠不齐的互联网时代,我们无时无刻不身处在互联网社会化媒体的“信息洪流”之中,因而无可避免的被它上面泛滥的信息所“裹挟”,也就是说,社会化媒体上的信息对现实世界中的每个人都有重大影响,社会化媒体是我们间接了解现实客观世界和主观世界的一面窗户,我们每时每刻都在受到它的影响。
综合上述两类情形,可以得出这样的结论,透过社会化媒体,我们可以观察现实世界:
由此, 社会化媒体是现实主客观世界的一面镜子,而它也会进一步影响人们的行为,如果我们对该领域中的优质媒体所发布的信息进行分析,除了可以了解该领域的发展进程和现状,还可以对该领域的人群行为进行一定程度的预判。
鉴于此种情况,作为互联网从业者的笔者想分析一下互联网行业的一些现状,于是想到了虎嗅网。
虎嗅网创办于2012年5月,是一个聚合优质创新信息与人群的新媒体平台。该平台专注于贡献原创、深度、犀利优质的商业资讯,围绕创新创业的观点进行剖析与交流。虎嗅网 的核心,是关注互联网及传统产业的融合、一系列明星公司(包括公众公司与创业型企业)的起落轨迹、产业潮汐的动力与趋势。
因此,对该平台上的发布内容进行分析,对于研究互联网的发展进程和现状有一定的实际价值。
1.2 本文的分析目的
笔者在本项目中的分析目的主要有4个:
(1)对虎嗅网内容运营方面的若干分析,主要是对发文量、收藏量、评论量等方面的描述性分析;
(2)通过文本分析,对互联网行业的一些人、企业和细分领域进行趣味性的分析;
(3)展现文本挖掘在数据分析领域的实用价值;
(4)将杂芜无序的结构化数据和非结构化数据进行可视化,展现数据之美。
1.3 分析方法---分析工具和分析类型
本文中,笔者使用的数据分析工具如下:
Python3.5.2(编程语言)
Gensim(词向量、主题模型)
Scikit-Learn(聚类和分类)
Keras(深度学习框架)
Tensorflow(深度学习框架)
Jieba(分词和关键词提取)
Excel(可视化)
Seaborn(可视化)
新浪微舆情(情绪语义分析)
Bokeh(可视化)
Gephi(网络可视化)
Plotly(可视化)
使用上述数据分析工具,笔者将进行2类数据分析:第一类是较为传统的、针对数值型数据的描述下统计分析,如阅读量、收藏量等在时间维度上的分布;另一类是本文的重头戏---深层次的文本挖掘,包括关键词提取、文章内容LDA主题模型分析、词向量/关联词分析、DTM模型、ATM模型、词汇分散图和词聚类分析。
2 数据采集和文本预处理
2.1 数据采集
笔者使用爬虫采集了来自虎嗅网主页的文章(并不是全部的文章,但展示在主页的信息是主编精挑细选的,很具代表性),数据采集的时间区间为2012.05~2017.11,共计41,121篇。采集的字段为文章标题、发布时间、收藏量、评论量、正文内容、作者名称、作者自我简介、作者发文量,然后笔者人工提取4个特征,主要是 时间特征 (时点和周几)和 内容长度特征 (标题字数和文章字数),最终得到的数据如下图所示:
2.2 数据预处理
数据分析/挖掘领域有一条金科玉律:“Garbage in, Garbage out”,做好数据预处理,对于取得理想的分析结果来说是至关重要的。本文的数据规整主要是对文本数据进行清洗,处理的条目如下:
(1) 文本分词
要进行文本挖掘,分词是最为关键的一步,它直接影响后续的分析结果。笔者使用jieba来对文本进行分词处理,它有3类分词模式,即全模式、精确模式、搜索引擎模式:
· 精确模式:试图将句子最精确地切开,适合文本分析;
· 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
· 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
现以“新浪微舆情专注于社会化大数据的场景化应用”为例,3种分词模式的结果如下:
【全模式】: 新浪/ 微舆情/ 新浪微舆情/ 专注/于/ 社会化/ 大数据/ 社会化大数据/ 的/ 场景化/ 应用
【精确模式】: 新浪微舆情/ 专注/于/ 社会化大数据/ 的/ 场景化/ 应用
【搜索引擎模式】:新浪,微舆情,新浪微舆情,专注,于,社会化,大数据,社会化大数据,的,场景化,应用
为了避免歧义和切出符合预期效果的词汇,笔者采取的是精确(分词)模式。
(2) 去停用词
这里的去停用词包括以下三类:
标点符号:, 。! /、*+-
特殊符号:▲等
无意义的虚词: “the”、“a”、“an”、“that”、“你”、“我”、“他们”、“想要”、“打开”、“可以”等
(3) 去掉高频词、稀有词和计算Bigrams
去掉高频词、稀有词是针对后续的主题模型(LDA、ATM)时使用的,主要是为了排除对区隔主题意义不大的词汇,最终得到类似于停用词的效果。
Bigrams是为了自动探测出文本中的新词,基于词汇之间的共现关系---如果两个词经常一起毗邻出现,那么这两个词可以结合成一个新词,比如“数据”、“产品经理”经常一起出现在不同的段落里,那么,“数据_产品经理”则是二者合成出来的新词,只不过二者之间包含着下划线。
3 描述性分析
该部分中,笔者主要对数值型数据进行描述性的统计分析,它属于较为常规的数据分析,能揭示出一些问题,做到知其然。
3.1 发文数量、评论量和收藏量的变化走势
从下图可以看出,在2012.05~2017.11期间,以季度为单位,主页的发文数量起伏波动不大,在均值1800上下波动,进入2016年后,发文数量有明显提升。
此外,一头(2012年第二季)一尾(2017年第四季)因为没有统计完全,所以发文数量较小。
下图则是该时间段内收藏量和评论量的变化情况,评论量的变化不愠不火,起伏不大,但收藏量一直在攀升中,尤其是在2017年的第二季达到峰值。收藏量在一定程度上反映了文章的干货程度和价值性,读者认为有价值的文章才会去保留和收藏,反复阅读,含英咀华,这说明虎嗅的文章质量在不断提高,或读者的数量在增长。
3.2 发文时间规律分析
笔者从时间维度里提取出“周”和“时段”的信息,也就是开题提到的“人工特征”的提取,现在做文章分布数量的在“周”和“时”上的交叉分析,得到下图:
上图是一个热力图,色块颜色上的由暖到冷表征数值的由大变小。很明显的可以看到,中间有一个颜色很明显的区域,即由“6时~19时”和“周一~周五”围成的矩形,也就是说,发文时间主要集中在工作日的白天。另外,周一到周五期间,6时~7时这个时间段是发文的高峰,说明虎嗅的内容运营人员倾向于在工作日的清晨发布文章,这也符合它的人群定位---TMT领域从业、创业者、投资人,他们中的许多人有晨读的习惯,喜欢在赶地铁、坐公交的过程中阅读虎嗅讯息。发文高峰还有9时-11时这个高峰,是为了提前应对读者午休时间的阅读,还有17时~18时,提前应对读者下班时间的阅读。
3.3 相关性分析
笔者一直很好奇,文章的评论量、收藏量和标题字数、文章字数是否存在统计学意义上的相关性关系。基于此,笔者绘制出能反映上述变量关系的两张图。
首先,笔者做出了标题字数、文章字数和评论量之间的 气泡图 (圆形的气泡被六角星替代,但本质上还是气泡图)。
上图中,横轴是文章字数,纵轴是标题字数,评论数大小由六角星的大小和颜色所反映,颜色越暖,数值越大,五角星越大,数值越大。从这张图可以看出,文章评论量较大的文章,绝大部分分布于由文章字数6000字、标题字数20字所构成的区域内。虎嗅网上的商业资讯文章大都具有原创、深度的特点,文章篇幅中长,意味着能把事情背后的来龙去脉论述清楚,而且标题要能够吸引人,引发读者的大量阅读,合适长度标题和正文篇幅才能做到这一点。
接下来,笔者将收藏量、评论量和标题字数、文章字数绘制成一张3D立体图,X轴和Y轴分别为标题字数和正文字数,Z轴为收藏量和评论量所构成的 平面 ,通过旋转这个3维的Surface图,我们可以发现收藏量、评论量和标题字数、文章字数之间的相关关系。
注意,上图的数值表示和前面几张图一样,颜色上的由暖到冷表示数值的由大到小,通过旋转各维度的截面,可以看到在正文字数5000字以内、标题字数15字左右的收藏量和评论量形成的截面出现“华山式”陡峰,因而这里的收藏量和评论量最大。
3.4 城市提及分析
在这里,笔者通过构建一个包含全国1~5线城市的词表,提取出经过预处理后的文本中的城市名称,根据提及频次的大小,绘制出 一张反映城市提及频次的地理分布地图 , 进而间接地了解各个城市互联网的发展状况(一般城市的提及跟互联网产业、产品和职位信息挂钩,能在一定程度上反映该城市互联网行业的发展态势)。
上图反映的结果比较符合常识,北上深广杭这些一线城市的提及次数最多,它们是互联网行业发展的重镇。值得注意的是,长三角地区的大块区域(长江三角洲城市群,它包含 上海 , 江苏省 的 南京 、 无锡 、 常州 、 苏州 、 南通 、 盐城 、 扬州 、 镇江 、 泰州 , 浙江省 的 杭州 、 宁波 、 嘉兴 、 湖州 、 绍兴 、 金华 、 舟山 、 台州 , 安徽省 的 合肥 、 芜湖 、 马鞍山 、 铜陵 、 安庆 、 滁州 、 池州 、 宣城 )呈现出较高的热度值,直接说明这些城市在虎嗅网各类资讯文章中的提及次数较多,结合国家政策和地区因素,可以这样理解地图中反映的这个事实:
长三角城市群是“一带一路”与长江经济带的重要交汇地带,在中国国家现代化建设大局和全方位开放格局中具有举足轻重的战略地位。中国参与国际竞争的重要平台、经济社会发展的重要引擎,是长江经济带的引领发展区,是中国城镇化基础最好的地区之一。
长三角城市群是“一带一路”与长江经济带的重要交汇地带,在中国国家现代化建设大局和全方位开放格局中具有举足轻重的战略地位。中国参与国际竞争的重要平台、经济社会发展的重要引擎,是长江经济带的引领发展区,是中国城镇化基础最好的地区之一。
接下来,笔者将抽取文本中城市之间的 共现关系 ,也就是城市之间两两同时出现的频率,在一定程度上反映出城市间经济、文化、政策等方面的相关关系,共现频次越高,说明二者之间的联系紧密程度越高,抽取出的结果如下表所示:
将上述结果绘制成如下动态的流向图:
由于虎嗅网上的文章大多涉及创业、政策、商业方面的内容,因而这种城市之间的共现关系反映出城际间在资源、人员或者行业方面的关联关系,本动态图中,主要反映的是北上广深杭(网络中的枢纽节点)之间的相互流动关系和这几个一线城市向中西部城市的单向流动情形。流动量大、交错密集的区域无疑是中国最发达的3个城市群和其他几个新兴的城市群:
京津冀城市群
长江三角洲城市群
珠江三角洲城市群
中原城市群
成渝城市群
长江中游城市群
上面的数据分析是基于数值型数据的描述性分析,接下来,笔者将进行更为深入的文本挖掘。
4 文本挖掘
数据挖掘是从有结构的数据库中鉴别出有效的、新颖的、可能有用的并最终可理解的模式;而文本挖掘(在文本数据库也称为文本数据挖掘或者知识发现)是从大量非结构的数据中提炼出模式,也就是有用的信息或知识的半自动化过程。
本文的文本挖掘部分主要涉及高频词统计/关键词提取/关键词云、文章标题聚类、文章内容聚类、文章内容LDA主题模型分析、词向量/关联词分析、ATM模型、词汇分散图和词聚类分析。
4.1 关键词提取
对于关键词提取,笔者没有采取词频统计的方法,因为词频统计的逻辑是:一个词在文章中出现的次数越多,则它就越重要。因而,笔者采用的是 TF-IDF (termfrequency–inverse document frequency)的关键词提取方法:
它用以评估一字/词对于一个文件集或一个语料库中的其中一份文件的重要程度,字/词的重要性会随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
由此可见,在提取某段文本的关键信息时,关键词提取较词频统计更为可取,能提取出对某段文本具有重要意义的关键词。
下面是笔者利用jieba在经预处理å�...
- ?
教程:使用Python进行基本图像数据分析!
侯翠柏
展开
[来自IT168] 【IT168 评论】本教程将介绍如何导入图像并观察其属性、拆分图层以及查看灰度。在正式开始之前,我们先来了解一些关于像素的基础知识。 计算机将图片以像素形式存储,这就像马赛克一样。如果像素太大,很难制作光滑的边缘和曲线。相反,我们使用的像素越多越小,看起来就会越平滑,或者说像素化程度越小,图像就会越好看,有时,这也被称为图像分辨率。
矢量图形是一种有点不同的存储图像方法,旨在避免与像素相关的问题。但是,即使是矢量图像,最终也会显示为像素一样的马赛克。颜色像素表示图像元素,描述每个像素的简单方法是使用三种颜色的组合,即红色,绿色,蓝色,这就是我们所说的RGB图像。 在RGB图像中,每个像素分别与红色,绿色,蓝色的值相关联的三个8比特数字表示。最后,如果使用放大镜观察缩放的图片,我们会看到图片由微小的光点或更具体的像素组成,更有趣的是这些小光点实际上具有多个不同颜色。 每张照片都以数字形式由像素组成,它们是构成图片的最小信息单位,通常是圆形或方形,它们通常布置在二维网格中。
如果三个颜色都处于最大值,则意味着它们是255,那就会显示为白色,如果三种颜色都处于最小值,或者值为0,则颜色显示为黑色。反过来,这三者的组合将为我们提供特定的像素颜色。由于每个颜色数字都是8个比特,因此值范围为0-255。
由于每个值可以具有256个不同的强度或亮度值,因此三种颜色总共有1680万个shade。
以下是Numpyand非常基本的图像数据分析步骤,其中一些涉及Python pacakges,如imageio,matplotlib等。导入图像并观察其属性拆分图层Greyscale对像素值使用逻辑运算符使用逻辑运算符进行运算卫星图像数据分析 导入图像 现在让我们加载图像并观察各种属性: if __name__ == '__main__': import imageio import matplotlib.pyplot as plt %matplotlib inline pic = imageio.imread('F:/demo_2.jpg') plt.figure(figsize = (15,15)) plt.imshow(pic)观察图像的基本属性 print('Type of the image : ' , type(pic)) print('Shape of the image : {}'.format(pic.shape)) print('Image Hight {}'.format(pic.shape[0])) print('Image Width {}'.format(pic.shape[1])) print('Dimension of Image {}'.format(pic.ndim)) Type of the image :
Shape of the image : (562, 960, 3) Image Hight 562 Image Width 960 Dimension of Image 3 ndarray的形状表明它是一个三层矩阵,这里的前两个数字是长度和宽度,第三个数字(即3)是三层:Red, Green, Blue。 因此,如果我们计算RGB图像的大小,则总大小将计为height x width x 3 print('Image size {}'.format(pic.size)) print('Maximum RGB value in this image {}'.format(pic.max())) print('Minimum RGB value in this image {}'.format(pic.min())) Image size 1618560 Maximum RGB value in this image 255 Minimum RGB value in this image 0 这些值对于验证很重要,因为8比特颜色强度不能超出0到255范围。 现在,使用图片分配变量,我们还可以访问图片的任何特定像素值,并进一步访问每个RGB通道。 ''' Let's pick a specific pixel located at 100 th Rows and 50 th Column. And view the RGB value gradually. ''' pic[ 100, 50 ] Image([109, 143, 46], dtype=uint8) 在这种情况下:R = 109; G = 143; B = 46,我们可以意识到这个特殊像素中有很多绿色。现在,我们可以通过给出三个通道的索引值来特别选择其中一个数字: 0红色通道的索引值 1绿色通道的索引值 2蓝色通道的索引值 但是,在OpenCV中,图像不是RGB而是BGR,imageio.imread将图像加载为RGB(或RGBA),但OpenCV假定图像为BGR或BGRA(BGR是默认的OpenCV颜色格式)。 # A specific pixel located at Row : 100 ; Column : 50 # Each channel's value of it, gradually R , G , B print('Value of only R channel {}'.format(pic[ 100, 50, 0])) print('Value of only G channel {}'.format(pic[ 100, 50, 1])) print('Value of only B channel {}'.format(pic[ 100, 50, 2])) Value of only R channel 109 Value of only G channel 143 Value of only B channel 46 好的,现在让我们快速查看整个图像中的每个频道。 plt.title('R channel') plt.ylabel('Height {}'.format(pic.shape[0])) plt.xlabel('Width {}'.format(pic.shape[1])) plt.imshow(pic[ : , : , 0]) plt.show()
plt.title('G channel') plt.ylabel('Height {}'.format(pic.shape[0])) plt.xlabel('Width {}'.format(pic.shape[1])) plt.imshow(pic[ : , : , 1]) plt.show()
plt.title('B channel') plt.ylabel('Height {}'.format(pic.shape[0])) plt.xlabel('Width {}'.format(pic.shape[1])) plt.imshow(pic[ : , : , 2]) plt.show()
现在,我们可以更改RGB值的数量。例如,让我们对红色、绿色、蓝色图层设置跟随行值的强度。 R频道:行 - 100到110 G频道:行 - 200到210 B频道:行 - 300到310 我们将加载一次图像,以便可以同时显示每个层的变化。 pic = imageio.imread('F:/demo_2.jpg') pic[50:150 , : , 0] = 255 # full intensity to those pixel's R channel plt.figure( figsize = (10,10)) plt.imshow(pic) plt.show()
pic[200:300 , : , 1] = 255 # full intensity to those pixel's G channel plt.figure( figsize = (10,10)) plt.imshow(pic) plt.show()
pic[350:450 , : , 2] = 255 # full intensity to those pixel's B channel plt.figure( figsize = (10,10)) plt.imshow(pic) plt.show()
为了更清楚,让我们也改变列部分,这次我们将同时更改RGB通道。 # set value 200 of all channels to those pixels which turns them to white pic[ 50:450 , 400:600 , [0,1,2] ] = 200 plt.figure( figsize = (10,10)) plt.imshow(pic) plt.show()
拆分图层 现在,我们知道图像的每个像素都由三个整数表示,将图像分割成单独的颜色分片只需拉出图像阵列的正确切片。 import numpy as np pic = imageio.imread('F:/demo_2.jpg') fig, ax = plt.subplots(nrows = 1, ncols=3, figsize=(15,5)) for c, ax in zip(range(3), ax): # create zero matrix split_img = np.zeros(pic.shape, dtype="uint8") # 'dtype' by default: 'numpy.float64' # assing each channel split_img[ :, :, c] = pic[ :, :, c] # display each channel ax.imshow(split_img)
灰度 黑白图像存储在二维阵列中,有两种类型的黑白图像: Greyscale:灰色阴影范围:0~255 Binary:像素为黑色或白色:0或255 现在,Greyscaling是一个将图像从全色转换为灰色阴影的过程。在图像处理工具中,例如:在OpenCV中,许多功能在处理之前使用灰度图像,这样做是因为它简化了图像,几乎可以降噪并增加处理时间,因为图像中的信息较少。 在python中有两种方法可以将图像转换为灰度,但使用matplotlib的简单方法是使用此公式获取原始图像的RGB值的加权平均值。 Y' = 0.299 R + 0.587 G + 0.114 B pic = imageio.imread('F:/demo_2.jpg') gray = lambda rgb : np.dot(rgb[... , :3] , [0.299 , 0.587, 0.114]) gray = gray(pic) plt.figure( figsize = (10,10)) plt.imshow(gray, cmap = plt.get_cmap(name = 'gray')) plt.show()
然而,GIMP将颜色转换为灰度图像软件有三种算法来完成任务。 灰度的Lightness 等级计算为 Lightness = × (max(R,G,B) + min(R,G,B)) 灰度的Luminosity 等级计算为 Luminosity = 0.21 × R + 0.72 × G + 0.07 × B 灰度的Average 计算为 Average Brightness = (R + G + B) ÷ 3 让我们尝试一下算法,Luminosity效果如何? pic = imageio.imread('F:/demo_2.jpg') gray = lambda rgb : np.dot(rgb[... , :3] , [0.21 , 0.72, 0.07]) gray = gray(pic) plt.figure( figsize = (10,10)) plt.imshow(gray, cmap = plt.get_cmap(name = 'gray')) plt.show() ''' Let's take a quick overview some the changed properties now the color image. Like we observe some properties of color image, same statements are applying now for gray scaled image. ''' print('Type of the image : ' , type(gray)) print() print('Shape of the image : {}'.format(gray.shape)) print('Image Hight {}'.format(gray.shape[0])) print('Image Width {}'.format(gray.shape[1])) print('Dimension of Image {}'.format(gray.ndim)) print() print('Image size {}'.format(gray.size)) print('Maximum RGB value in this image {}'.format(gray.max())) print('Minimum RGB value in this image {}'.format(gray.min())) print('Random indexes [X,Y] : {}'.format(gray[100, 50])) Type of the image :
Shape of the image : (562,960) Image Height 562 Image Widht 960 Dimension of Image 2 Image size 539520 Maximum RGB value in this image 254.9999999997 Minimum RGB value in this image 0.0 Random indexes [X,Y] : 129.07 使用逻辑运算符处理像素值 我们可以使用逻辑运算符创建相同大小的bullion ndarray。但是,这不会创建任何新数组,它只是将值返回到其主变量。例如,如果考虑在RGB图像中滤除一些低值像素或高值或(任何条件),可以先将RGB转换为灰度。 首先加载图像并在屏幕上显示: pic = imageio.imread('F:/demo_1.jpg') plt.figure(figsize = (10,10)) plt.imshow(pic) plt.show() 接下来,我们考虑转储该图像,比如我们想要过滤所有低于20 的像素值。为此,我们将使用逻辑运算符执行此任务,返回所有索引的True值。 low_pixel = pic < 20 # to ensure of it let's check if all values in low_pixel are True or not if low_pixel.any() == True: print(low_pixel.shape) (1079, 1293, 3) 正如上文所说,传统上不使用宿主变量,但我之所以提到是因为它只保留True值。 所以,如果我们看到low_pixel和pic的 shape,我们会发现它们都具有相同的 shape。 print(pic.shape) print(low_pixel.shape) (1079, 1293, 3) (1079, 1293, 3) 我们使用全局比较运算符为所有小于200的值生成低值滤波器。但是,我们可以使用此low_pixel数组作为索引将这些低值设置为某些特定值,这些值可能高于或低于先前的像素值。 # randomly choose a value import random # load the orginal image pic = imageio.imread('F:/demo_1.jpg') # set value randomly range from 25 to 225 - these value also randomly choosen pic[low_pixel] = random.randint(25,225) # display the image plt.figure( figsize = (10,10)) plt.imshow(pic) plt.show()
图层蒙版 图像蒙版是一种图像处理技术,用于去除具有模糊边缘,透明或头发部分的照片背景。 现在,我们将创建一个圆盘形状的蒙版。首先,我们将测量从图像中心到每个边界像素值的距离。我们设置一个比较方便的半径值,然后使用逻辑运算符创建一个圆盘,以下为代码: if __name__ == '__main__': # load the image pic = imageio.imread('F:/demo_1.jpg') # seperate the row and column values total_row , total_col , layers = pic.shape ''' Create vector. Ogrid is a compact method of creating a multidimensional- ndarray operations in single lines. for ex: >>> ogrid[0:5,0:5] output: [array([[0], [1], [2], [3], [4]]), array([[0, 1, 2, 3, 4]])] ''' x , y = np.ogrid[:total_row , :total_col] # get the center values of the image cen_x , cen_y = total_row/2 , total_col/2 ''' Measure distance value from center to each border pixel. To make it easy, we can think it's like, we draw a line from center- to each edge pixel value --> s**2 = (Y-y)**2 + (X-x)**2 ''' distance_from_the_center = np.sqrt((x-cen_x)**2 + (y-cen_y)**2) # Select convenient radius value radius = (total_row/2) # Using logical operator '>' ''' logical operator to do this task which will return as a value of True for all the index according to the given condition ''' circular_pic = distance_from_the_center > radius ''' let assign value zero for all pixel value that outside the cirular disc. All the pixel value outside the circular disc, will be black now. ''' pic[circular_pic] = 0 plt.figure(figsize = (10,10)) plt.imshow(pic) plt.show()
卫星图像处理 卫星图像及其处理系统非常有用,我们可以用于做一些分析任务。 # load the image pic = imageio.imread('F:\satimg.jpg') plt.figure(figsize = (10,10)) plt.imshow(pic) plt.show()
我们来看一些基本信息: print(f'Shape of the image {pic.shape}') print(f'hieght {pic.shape[0]} pixels') print(f'width {pic.shape[1]} pixels') Shape of the image (3725, 4797, 3) hieght 3725 pixels width 4797 pixels 这张图片上有一些有趣的东西,像许多其他的图像可视化一样,每个RGB层中的颜色都有自己的意思。例如,红色的强度将表示像素中的地理数据点的高度,蓝色的强度表示方位的度量,绿色表示斜率。这些颜色将有助于以更快,更有效的方式传达此信息,而不是显示数字。 红色像素表示:Altitude· 蓝色像素表示:Aspect 绿色像素表示: Slope 通过观察彩色图像,我们可以分辨出海拔是多少,斜率是多少,以及Slope是什么,这就是为颜色加载更多含义以表示更科学的分析的想法。 检测每个通道的像素 # Only Red Pixel value , higher than 180 pic = imageio.imread('F:\satimg.jpg') red_mask = pic[:, :, 0] < 180 pic[red_mask] = 0 plt.figure(figsize=(15,15)) plt.imshow(pic) # Only Green Pixel value , higher than 180 pic = imageio.imread('F:\satimg.jpg') green_mask = pic[:, :, 1] < 180 pic[green_mask] = 0 plt.figure(figsize=(15,15)) plt.imshow(pic) # Only Blue Pixel value , higher than 180 pic = imageio.imread('F:\satimg.jpg') blue_mask = pic[:, :, 2] < 180 pic[blue_mask] = 0 plt.figure(figsize=(15,15)) plt.imshow(pic) # Co...
- ?
数据分析图的十大错误,你占了几个?
诸黎云
展开
"数据可视化是个好帮手,可以帮助用户理解数据。但是,你真的会用它吗?看看这里,数据可视化的十大错误你占了几个?
优秀的数据可视化依赖优异的设计,并非仅仅选择正确的图表模板那么简单。全在于以一种更加有助于理解和引导的方式去表达信息,尽可能减轻用户获取信息的成本。当然并非所有的图表制作者都精于此道。所以我们看到的图表表达中,各种让人啼笑皆非的错误都有,下面就是这些错误当容易纠正的例子:
1 、饼图顺序不当
饼图是一种非常简单的可视化工具,但他们却常常过于复杂。份额应该直观排序,而且不要超过5个细分。有两种排序方法都可以让你的读者迅速抓取最多的重要信息。
方法一:将份额最大的那部分放在12点方向,逆时针放置第二大份额的部分,以此类推。
方法二:最大部分放在点,然后顺时针放置。
2 、在线状图中使用虚线
虚线会让人分心,而是用实线搭配合适的颜色更容易彼此区分。
3 、数据摆放不直观
你的内容应该符合逻辑并于直观的方式引导读者阅读数据。对类目进行按字母,次数或数值大小进行排序。
4 、数据模糊化
确保数据不会因为设计而丢失或被覆盖。例如在面积图中使用透明效果来确保用户可以看到全部数据。
5 、耗费读者更多的精力
要通过辅助的图形元素来使数据更易于理解,比如在散点图中增加趋势线。
6 、错误呈现数据
确保任何呈现都是准确的,比如,气泡图的大小应该跟数值一样,不要随便标注。
7 、在热图中使用不同颜色
一些颜色比其他颜色突出,赋予了数据不必要的重元素。反而你应该使用单一颜色,然后通过颜色的深浅来表达。
8 、柱状过宽或过窄
柱子与柱子之间的间隔最好调整为宽的1/2。
9 、数据对比困难
对比是呈现差异的有效方式,但如果你的读者不易对比时,效果就大打折扣了。确保数据的呈现方式一致,可以让你的读者对比。
10 、使用三维图
尽管这些图看来让人振奋,但3D图也容易分散预期和扰乱数据,坚持2D是王道。
怎么样?看过10个数据可视化的错误之后,是否意识到领导对你的数据分析图表摇头的原因了,快行动起来吧~
- ?
经常用ppt,你知道怎么做图表数据分析图吗?
晓夏
展开
1.打开ppt以后先建立一个幻灯片,点击菜单栏上面的【新建幻灯片】---选择任意一个布局。
2.点击幻灯片中的图表的缩略图,这样就打开了插入图表的对话框。
3.选择一个图表的样式,然后点击确定。
4.打开了excel表格,在这个表格中输入数据,这些数据就是用于建立图表的,一开始给出了一些默认的数据,这些数据都是没用的,修改这些数据,改成需要的图标,如下图中第二幅图。
5.关闭excel,图表就自动创建了,看到这个图表就是刚才输入的那些数据建立的。
(本文内容由百度知道网友茗童贡献)
- ?
一张图检测你的数据分析等级
雅绿
展开
大数据是一个非常好的发展方向。科学的数据统计与分析上至国家、企业,下至个人,都能提供出莫大的帮助,“不怕乱如麻,只怕不调查”数据是反馈一个集体或者个人以往表现最有力的证明。沧桑话巨变,数据铸辉煌。数据能力的强弱也能决定发展方向是否客观真实,决定了未来的可能成就。本文主要讲述数据分析等级是根据哪些方面划分的以及数据分析的日常工作。
1、数据分析师的日常工作内容是什么?
数据分析师这个职位,不同的公司,不同的行业,对于它的理解和工作内容都有所不同。在有些传统行业,数据分析师工作重点是做行业报告等;在阿里巴巴等大型互联网公司,职位区分比较明确,数据分析师大部分时间只做产品和运营的分析工作,至于基础数据处理、搭建数据产品等等不涉及;在创业公司等相对小型公司,数据分析师要干的活可能要不仅仅是产品和运营分析,基础数据采集和处理,数据产品搭建都属于数据分析师的工作范围。
明确了数据分析师的工作范围,大概也就清楚了每天要做些什么,比如:
产品和运营的数据提供(正常分析师工作)
基础数据采集和处理(类似ETL工作)
数据产品的思考和搭建(类似数据产品经理工作)
数据价值的挖掘(类似数据挖掘工程师工作)
2、数据分析师需要会什么?
①、数据分析理论要求及对数字的敏感性,包括统计学知识、市场研究、模型原理等。
②、工具使用,包括挖掘工具、数据库、常用办公软件(excel、PPT、VBA、word、脑图)等。
③、业务理解能力和对商业的敏感性。对商业及产品要有深刻的理解,因为数据分析的出发点就是要解决商业的问题,只有理解了商业问题,才能转换成数据分析的问题,从而满足部门的要求。
④、汇报和图表展现能力。这是临门一脚,做得再好的分析模型,如果不能很好地展示给领导和客户,成效就大打折扣,也会影响到数据分析师的职业晋升。
3、数据分析师的成长阶段
①第一阶段(一般岗位叫数据专员)
基本学会excel(VBA最好学会;会做透视表;熟练用筛选、排序、公式),做好PPT。这样很多传统公司的数据专员已经可以做了
②第二阶段
这一阶段要会SQL,懂业务,加上第一阶段的那些东西。大多数传统公司和互联网小运营、产品团队够用了。
③第三阶段(数据分析师)
统计学熟练(回归、假设检验、时间序列、简单蒙特卡罗),可视化,PPT和excel一定要溜。这些技术就够了,能应付大多数传统公司业务和互联网业务。
④第四阶段(分裂)
数据分析师(数据科学家)、BI等:这部分一般是精进统计学,熟悉业务,机器学习会使用(调参+选模型+优化),取数、ETL、可视化啥的都是基本姿态。
4.数据分析师就业方向
数据分析师 – 偏向商业化的数据分析,运营广告等活动效果分析,销售额或利润预测,用户特征描述等,需要较好的统计知识,需要懂1-2门数据分析工具如SAS、R等;
咨询顾问 – 面向客户,为客户提供数据抓取、数据分析、出数据报表、改进建议落实等咨询服务,需要有较好的沟通能力,需要懂1-2门数据分析工具如SAS、R等(咨询顾问其实也分技术和非技术,技术类的主要是为客户搭建数据平台)
数据产品经理 – 一般是互联网公司独有,数据量大的公司会有自己的数据产品,如阿里巴巴的数据魔方等,主要是针对数据产品从产品立项、提开发需求、跟进产品开发、测试一直到产品上线等工作(相对来说并不需要对从业者要求很高的数据分析或统计能力,属于目前市场上为数不多但高工资的职位)
- ?
数据可视化神器 | 秒出关系型数据分析图
青阳玲
展开
Gephi
Gephi是面向各种网络和复杂系统、动态图形和层次图形的交互式可视化和探索平台。是一款网络分析领域的数据可视化处理软件,开发者对它寄予的希望是:成为 “数据可视化领域的Photoshop”。
Gephi是开发和理解图形的工具。就像Photoshop一样,但是对于图形,用户可以通过创造数据表达方式,改变其结构、形状和颜色来显示隐藏目标数据的属性。目的是帮助数据分析人员在数据来源过程中做出假设、直观地发现模式、避免结构中存在的奇点或故障。它是传统统计学的一种补充工具,因为视觉思维和交互界面被认可以有效促进推理的方式。这是一个用于探索数据分析的软件,是一个视觉分析领域的研究范例。Gephi是在Netbeans平台上开发,语言是JAVA,并且使用OpenGL作为它的可视化引擎。依赖于它的APIs。Gephi 是一种开源软件,允许开发者去扩展和重复使用,他们可以编写自己感兴趣的插件,创建新的功能。
Gephi的用途?
在大数据蓬勃发展的今天,社交网络所表现出的社会影响力,远超于人们的想象。能更好理解社交网络中潜藏的巨大的信息量以及其快速迁移变化的属性,如何衡量信息传播的关系与效果,对于理解社会关系,政治,经济,文化等方面都是至关重要的。
Gephi就是一款处理表现关系的数据的软件。比如在高中年级中,谁喜欢谁;在社交媒体上,谁关注了谁;在投票选举中,谁投票给谁;在组织中,谁领导谁,谁和谁合作等等。现阶段,Gephi在学术界,新闻学和其他领域的一些研究项目起到了重要的辅助甚至推动的作用,例如:
1,在可视化纽约时报内容的全球连通;2,社会动荡中检查Twitter网络流量3,社会网络分析
以下是课程大纲:
课程1
1 介绍Gephi及其背景
2 Gephi图形的基本
3 Gephi软件的界面
4 Gephi的数据表的生成
5 Gephi的基础操作
课程2
1 制作Gephi关系数据图
2 更改算法布局
3 筛选数据
4 案例1(各国纸媒之间关系)
5 案例2(社交网络关系于地理关系)
Gephi软件的界面介绍
注:该课程介绍使用的是Gephi0.9.1, 最新版本为0.9.2(相似)
打开文件
输入报告调整
GRAPH执行栏
外观工具栏界面
此处不同的布局,基于不同的植入算法,进行边,点相互力的调整,达成平衡。
通过调整不同的参数,改变对点的吸引和排斥以收缩,或扩展的方式改变图面布局。
不同算法下,布局的展示(1)
不同算法下,布局的展示(2)
数据列表,可看到导入数据,也可在此界面编辑数据库及列表。
预览界面,相当于打印时的预览界面。导出数据图之前可以在预览页中调整输出格式及相关参数。
延伸案例操作
悲惨世界 Les Misérables中人物角色之间的关联性
来源:D. E. Knuth, The Stanford GraphBase: A Platform for Combinatorial Computing,Addison-Wesley, Reading,MA, 1993
其他操作练习
以下图来源:官网
注意事项
怎么做出Gephi可是别的数据文件
根据Gephi可识别的数据文件格式,最简单的格式为csv。那么什么是csv格式文件?
CSV(Comma Separated Values逗号分隔值)
.csv是一种文件格式(如.txt、.doc等),也可理解.csv文件就是一种特殊格式的纯文本文件。即是一组字符序列,字符之间已英文字符的逗号或制表符(Tab)分隔。
在windows系统环境上.csv文件打开方式有多种,如记事本、excel、Notepad++等,只要是文本编辑器都能正确打开。
(1)新建一个文本文档。
(2)打开“新建文本文档.txt”,进行编辑。
注意:关键字与关键字之间使用英文逗号隔开,第一行为引用字段,第二行为对应值。
(3)生成.csv文件。
方式一:文件-另存为-命名文件名-选择编码utf-8,最后保存。
方式二:保存文档后直接修改“新建文本文档.txt”为“使用记事本创建CSV文件.csv”。
各种格式文件优劣性对比
软件操作下载
官网下载:Windows, Mac OS X and Linux.
同时下载:Java SE Development Kit 10 Downloads
详细安装步骤请参考官网:https://gephi.org/users/install/
以上为本次课程的大纲介绍,由于篇幅设置没有给大家展示更多案例。但课程期间会给大家讲述到。
所有报名此课程的同学们均可得到对应的教程视频。(课程结束后的一个月后给大家)
面向人群:
学生
设计师(不享有优惠服务)
课程时间:
06.06(下周三)
06.08(下周五)
上课时间:pm 16:30开始(课程长度由老师把控)
费用:
99人民币
ASRI 学员免费
优惠条件:
1.在此博文下方留言并点赞最多的前三名即可免费学习此课程。
2.转发此博文到朋友圈集齐20个赞并截图给顾问老师,即可免去49人民币。
授课方式:
线上+线下
CCTALK直播
报名请私信:
-end-『 评估 』『 合作 』联系邮箱:as_office@163
关于ASRI
AS国际建筑与空间研究所(ASRI)作为设计先锋研究所,一直以来从事创造性设计。主张设计观点与批判精神作为建筑设计师的必备条件。可能性作为首要出发,以设计师独有的理解方式积极寻求工作方法及策略。
ASRI——反重力国际(Anti-gravity international)人才战略的计划执行者。 AS(ASRI)主张试验性的,自由的、开放的、纯粹的学术与设计交流平台,提倡建筑非线性设计,空间叙述性、动态的非预期设计、数字化时期空间设计等.
- ?
用R语言做数据分析——相关图
新波
展开
相关系数矩阵是多元统计分析的一个基本方面。哪些被考察的变量与其他变量的相关性很强,哪些并不强?相关变量是否以某种特定的方式聚集在一起?随着变量数的增加,这类问题将变得难以回答。相关图作为一种相对现代的方法,可通过对相关系数矩阵的可视化来回答这些问题。
相关图非常容易解释,以mtcars数据框中的变量相关性为例,它含有11个变量,对每个变量都测量了32辆汽车。利用下面的代码,我们就可以获得该数据的相关系数:
> options(digits = 2)
>cor(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
mpg 1.00 -0.85 -0.85 -0.78 0.681 -0.87 0.419 0.66 0.600 0.48 -0.551
cyl -0.85 1.00 0.90 0.83 -0.700 0.78 -0.591 -0.81 -0.523 -0.49 0.527
disp -0.85 0.90 1.00 0.79 -0.710 0.89 -0.434 -0.71 -0.591 -0.56 0.395
hp -0.78 0.83 0.79 1.00 -0.449 0.66 -0.708 -0.72 -0.243 -0.13 0.750
drat 0.68 -0.70 -0.71 -0.45 1.000 -0.71 0.091 0.44 0.713 0.70 -0.091
wt -0.87 0.78 0.89 0.66 -0.712 1.00 -0.175 -0.55 -0.692 -0.58 0.428
qsec 0.42 -0.59 -0.43 -0.71 0.091 -0.17 1.000 0.74 -0.230 -0.21 -0.656
vs 0.66 -0.81 -0.71 -0.72 0.440 -0.55 0.745 1.00 0.168 0.21 -0.570
am 0.60 -0.52 -0.59 -0.24 0.713 -0.69 -0.230 0.17 1.000 0.79 0.058
gear 0.48 -0.49 -0.56 -0.13 0.700 -0.58 -0.213 0.21 0.794 1.00 0.274
carb -0.55 0.53 0.39 0.75 -0.091 0.43 -0.656 -0.57 0.058 0.27 1.000
哪些变量相关性最强?哪些变量相对独立?是否存在某种聚集模式?如果不花点时间和精力,单利用这个相关系数矩阵来回答这些问题是比较问题的。
利用corrgram包中的corrgram()函数,我们可以以图形的方式展示该相关系数矩阵,代码为:
>library(corrgram)
>corrgram(mtcars,order=TRUE,lower.panel=panel.shade,
+ upper.panel=panel.pie, text.panel=panel.txt,
+ main="Correlogram of mtcars intercorrelations")
我们先从主对角线下方的单元格开始解释这幅图形。默认地,蓝色和从左下指向右上的斜杠表示单元格中的两个变量呈正相关。反过来,红色和从左上指向右下的斜杠表示变量呈负相关。色彩越深,饱和度越高,说明变量相关性越大。相关性接近于0的单元格基本无色。
从图中含阴影的单元格中可以看到,gear、am、drat和mpg呈相互间呈正相关,wt、disp、hp和carb相互间也呈正相关。但第一组变量与第二组变量呈负相关。我们还可以看到carb和am、vs和gear、vs和am以及drat和qsec四组变量间的相关性很弱。
上三角单元格用饼图展示了相同的信息。颜色的功能同上,但相关性大小由被填充的饼图块的大小来展示。正相关性将从12点钟方向开始顺时钟填充饼图,而负相关性则逆时钟方向填充饼图。corrgram函数的格式如下:
corrgram(x, order=, panel=, text.panel=, diag.panel=)
其中,x是一行一个观测的数据框。当order=TRUE时,相关矩阵将使用主成分分析法对变来那个重排序,这将使得二元变量的关系模式更为明显。选项panel设定非对角线面板使用的元素类型。我们可以通过选项lower.panel和upper.panel来分别设置主对角线上方和上方的元素类型。而text.panel和diag.panel选项控制着主对角线元素类型。可用的panel值如下图所示:
我们进行第二段代码:
>options(digits = 2)
>library(corrgram)
>corrgram(mtcars,order=TRUE,lower.panel=panel.ellipse,
+ upper.panel=panel.pts, text.panel=panel.txt,
+ diag.panel = panel.minmax,
+ main="Correlogram of mtcars data scatter plots and ellipses")
这幅图中,下三角区域包含平滑拟合曲线和置信椭圆,上三角区域包含散点图。主对角面板包含变量最小值和最大值。矩阵的行和列利用主成分分析法进行了重排序。
我们还可以使用colorRampPallette()函数自主控制corrgram()函数中使用的颜色,演示代码如下:
library(corrgram)
col.corrgram<- function(ncol){
colorRampPalette(c("darkgoldenrod4","burlywood1","darkkhaki","darkgreen"))(ncol)
}
corrgram(mtcars,order=TRUE,lower.panel=panel.shade,
upper.panel=NULL, text.panel=panel.txt,
main="Correlogram of mtcars intercorrelations")
- ?
干货丨收集最全的数据分析图
全水儿
展开
来自:数据观 https://shujuguan
DT时代,我们每天都会收获来自各种渠道的海量数据,它们是对我们上一步行动的反馈,但人脑消化数据的能力却是有限的——如何及时洞察数据中的涵义,就需要数据可视化工具的帮助了。然而,图表的类型非常丰富,如何做出正确的选择,达到“一图胜千言”的效果呢?
[数据的五种关系]
首先,我们需要了解,数据通常包含五种相关关系:构成、比较、趋势、分布及联系。
构成
主要关注每个部分所占整体的百分比,如果你想表达的信息包括:“份额”、“百分比”以及“预计将达到百分之多少”,这时候可以用到饼图。
比较
可以展示事物的排列顺序——是差不多,还是一个比另一个更多或更少呢?“大于”、“小于”或者“大致相当”都是比较相对关系中的关键词,这时候会首选条图。
趋势
是最常见的一种时间序列关系,关心数据如何随着时间变化而变化,每周、每月、每年的变化趋势是增长、减少、上下波动或基本不变,这时候使用线图更好地表现指标随时间呈现的趋势。
分布
是关心各数值范围内各包含了多少项目,典型的信息会包含:“集中”、“频率”与“分布”等,这时候使用柱图;同时,还可以根据地理位置数据,通过地图展示不同分布特征。
联系
主要查看两个变量之间是否表达出我们预期所要证明的模式关系,比如预期销售额可能随着折扣幅度的增长而增长,这时候可以用气泡图来展示,用于表达“与……有关”、“随……而增长”、“随……而不同”变量间的关系。
对信息中包含的5种关系,可以简单归纳如下:
构成:占总体的百分比
比较:项目的排名
趋势:如何随着时间变化
分布:项目的频率情况
联系:变量之间的关系
[图表的具体适用场景]
下面,我们具体来看一下图表特点及适用场景:
以下图表均制作于数据观
条图
条图表达比较关系,按照强调的方式可以排列任何顺序,适用于高亮Top3或Top5数据,如在零售行业中统计畅销品的销售情况就是很好的应用。它是最通用的一种图表,应在所有的图集使用中占到25%。
柱图
柱图用高度反映数据差异,用来展示有多少项目(频率)会落入一个具有一定特征的数据段中,比如分析公司人员构成是否存在老龄化现象,可以通过柱图看到25岁以下的员工有多少,25岁到35岁之间员工有多少等这种年龄的分布情况。同时,柱图还可以用来表示含有较少数据值的趋势变化关系。
分析图形有单指标柱图、多指标柱图以及堆叠柱图类型。
(1)、单指标柱图
(2)、多指标柱图
(3)、堆叠柱图
线图
线图可用来反映随时间变化而变化的关系,尤其是在趋势比单个数据点更重要的场合。
在柱图与线图的选择过程中,可以考虑数据的本质。柱图强调的是数量的级别,它更适合于表现在一小段时间里发生的事件,产量的数据很适合这个领域。线图强调的是角度的运动及图像的变换,因此展示数据的发展趋势时最好使用它,存货量就是一个很好的例子。柱图和线图的使用应占到图集看板的50%左右。
线图类型中可以有单线图,还可以在图中进行多指标趋势性比较。
(1)、单线图
(2)、多指标趋势性比较
饼图
构成比例关系时,最好使用饼图,给人一种整体的形象,可以展示每一部分所占全部的百分比,比如产品A预计销售额占到所有产品销售额的最大份额。
为了使饼图尽量发挥作用,在使用中不宜多于6种成分。人的眼睛比较习惯于按顺时针方向进行观察,所以应该讲最重要的部分放在紧靠12点钟的位置,如果没有哪一个部分比其他部分更加重要,那么就应该考虑让它们从大到小的顺序排列。
数据观除了有标准饼图,还提供中空饼图和环形饼图两种类型。
(1)、标准饼图
(2)、中空饼图
(3)、环形饼图
Attention!不适用饼图的情况
饼图是通过面积呈现数据的变化,当各指标所占比例接近时,无法直观的判断面积的大小,此时选择条图来呈现,规律就更加清晰。饼图是应最少使用的图表,在所有的陈述和报告中其使用率应少于5%。
错误的图表类型:
正确的图表类型:
气泡图
气泡图判断两个变量之间是否存在某种关系,可反映五维数据。每个气泡的不同颜色或标签,以及气泡点大小,都可以反映一个维度。一般使用率为10%。
KPI图
最直接显示结果,适用于高亮关注指标值或者差异,可以通过主要指标和次要指标进行体现。信息量避免过多,越直观越好。
面积图
与折线图较为类似,面积图强调变量随时间而变化的程度,也可用于引起人们对总值趋势的注意。用填充了颜色或图案的面积来显示数据,面积片数不宜超过5片。
漏斗图
漏斗图用来表示逐层分析的过程,从一个总值(最顶端),不断除去不关心的部分,最终得到关心的值的过程。
多用于业务流程比较规范、周期长、环节多的流程分析,通过比较各个环节宽窄大小,能够直观地发现和说明问题所在。常见应用场景:电商网站、营销推广、CRM等。
1)电商网站:通过转化率比较能充分展示用户从进入网站到实现购买的最终转化率。2)营销推广:反映搜索营销的各个环节的转化,从展现、点击、访问、咨询,直到生成订单过程中的客户数量及流失。
3)CRM:销售漏斗图用来展示客户各个阶段转化比较。
金字塔图
金字塔图用于展示类似金字塔的层级结构和数据量。例如某个国家的收入分配,金字塔顶部显示高收入类别,逐渐降低到代表低收入的底部。
雷达图
雷达图可以用来表现一个周期数值的变化,也可以用来表现特定对象主要参数的相对关系。
雷达图多用于在财务分析中,用来分析企业负债能力、运营能力、盈利和发展能力等指标。
地图
地图是信息密度最大的数据可视化方式,人们在日常生活中就使用地图,所以能直观理解地图。
数据观基于不同的视觉化原理提供三种地图:区域地图、散点地图和热力地图。
(1)、区域地图
区域地图是按照国家、省市行政区划分,用来展现地理信息,以及与地理位置有关的信息,指标的多少可以用颜色深浅区分。
(2)、散点地图
散点地图基于高德地图实现,通过定位经纬度,用散点来表示所在位置的信息指标。
(3)、热力地图
热力地图以特殊高亮的形式显示访客所在的地理区域的图示,不同颜色反映不同区域密度的分布。
表格
表格可以通过拖拽所关心的指标,如通过一级、二级分类,了解更加明细的数据,起到数据透视表功能。
综合使用
饼图、柱图、条图、线图、气泡图可以组成可视化报告90%图形,其他视觉化展示可以将图表组合起来综合使用。
以上就是为大家提供的图表基本使用原则,适用于日常工作中大多数的图表制作。
最后,希望大家都可以需要根据自己想要表达的信息选择合适的图表,让数据可视化帮助我们的大脑减负,替我们的数据说话。
数据分析用图
-
1、只需3秒快速实现求和
-
2、如何快速填充序号
-
3、如何自动填充序号(公式法)
-
4、数据条的神奇应用
-
5、多文本快速合并
-
6、查找与替换的不同玩法
-
7、快速定位到指定区域
-
8、数据排序、工资条制作
-
9、快速筛选(模糊、精确筛选)
-
10、快速插入空行
-
11、快速删除空行
-
12.快速跳转到天涯海角
-
13、.同时查看两个Excel文件
-
14、用条件格式扮靓报表
-
15、一键插入Excel图表
-
16、批量处理行高、列宽
-
17、利用拆分功能查看数据
-
18、批量录入相同内容
-
19、工作表快速跳转
-
20、批量录入表格模板(精品课程)
-
21、Excel函数与公式的应用、公式循环引用的查找
-
22、IF函数单条件判断同比增长
-
23、用sum函数 格式相同,连续多表数据汇总
-
24、excel快捷键
-
25、VLOOKUP函数——根据销售员匹配销售额
-
26、统计各部门销售总额
-
27、统计指定条件个数
-
28、怎样输入当前日期和时间、星期数
-
29、销售业绩排名
-
30、Sumproduct函数-万能函数(销售额汇总求和)
-
31、根据销售员,地区,商品名称汇总
-
32、批量替换PPT字体
-
33、给销售额数据批量添加万元单位
-
34、一秒快速核对两列数据
-
35、快速定位到指定单元格或区域
-
36、快速制作双行标题工资条
-
37、给你的表格做个瘦身
-
38、快速打开常用的Excel文件
-
39、快速打开多个Excel文件
-
40、利用创建组—快速隐藏/展开多列数据
-
41、快速制作下拉菜单
-
42、复制粘贴表格,如何保留数据源列宽格式一致?
-
43、两列数据位置互换
-
44、1秒钟扮靓报表——如何实现表格隔行换色
-
45、快速删除重复记录——保留唯一值
-
46、快速向下填充、向右填充,文本或公式
-
47、给Excel文件添加密码
-
48、插入带图片的批注
-
49、输入公式后不计算?
-
50、如何设置单元格缩进
-
51、快速解决Excel表格总显示货币格式
-
52、批量添加万元单位
-
53、你会四舍五入么?
-
54、用RAND函数机选彩票
-
55、冻结首行你会么?
-
56、超链接的高级应用
-
57、IFERROR函数-屏蔽错误值
-
58、批量填充颜色
-
59、录入数据
-
60、快速输入工号
-
61、快速行列转置
-
62、自定义缩放界面
-
63、多个单元格同时输入
-
64、如何计算立方米?
-
65、快速制作双行标题工资条
-
66、输入带方框的√和×
-
67、快速将姓名对齐
-
68、快速输入性别
-
69、按单位职务排序
-
70、自动计算合同到期日期
-
71、计算时间间隔
-
72、日期和时间的拆分
-
73、快速处理不规范的日期格式
-
74、快速填充合并单元格
-
75、效率加倍的快捷键
-
76、快速复制表格和对象
-
77、快速创建工作表副本
-
78、快速复制序列号
-
79、快速显示公式
-
80、多个单元格同时输入
-
81、快速调整显示比例
-
82、快速自动填充
-
83、快速填充(Ctrl+E)
-
84、Ctrl与数字键结合
-
85、快速将多列数据整理为1列
-
86、快速将1列数据拆分为多列
-
87、快速定位公式
-
88、快速录入数据
-
89、快速累计求和
-
90、身份证号码显示为0怎么办?
-
91、快速制作斜线表头
-
92、文本竖向显示
-
93、神奇的监视窗口
-
94、不一样的格式刷
-
95、快速美化图表
-
96、快速生成当前日期
-
97、快速找出循环引用
-
98、快速提取信息
-
99、二维表快速转换为一维表
-
100、快速多表合并