㈠ 数据结构 图如何创建啊
带权图(网)的邻接表存储的C++实现
#include <iostream>
using namespace std;
const int MaxVexs=20;
//前向声明
template <typename ArcType, typename VexType> class Graph;
template <typename ArcType, typename VexType> class VexNode;
// 边节点类
template <typename ArcType>
class ArcNode{
template<typename Type1, typename Type2>friend class VexNode;
template<typename Type1, typename Type2>friend class Graph;
private:
int adjvex;
ArcType weight;
ArcNode *nextarc;
ArcNode():nextarc(NULL){}
ArcNode(int v, const ArcType& w):adjvex(v),weight(w),nextarc(NULL){}
};
//顶点节点类
template <typename ArcType, typename VexType>
class VexNode{
friend class Graph<ArcType, VexType>;
private:
VexType data;
ArcNode<ArcType> *firstarc;
VexNode():firstarc(NULL){}
};
// 邻接表图类
template<typename ArcType, typename VexType>
class Graph{
private:
VexNode<ArcType,VexType> *VexTable;
int CurrentNumVexs;
int CurrentNumArcs;
//int GetVexPosition(const VexType& v);
public:
Graph():VexTable(NULL),CurrentNumVexs(0),CurrentNumArcs(0){}
Graph(VexType *v, int num=MaxVexs);
~Graph();
bool empty() { return CurrentNumVexs==0; }
int GetNumVexs() { return CurrentNumVexs; }
int GetNumArcs() { return CurrentNumArcs; }
bool GetVexValue(VexType& result, int v);
bool GetWeight(ArcType& result, int v1, int v2);
int GetAdjvexPosition(int v);
int GetNextAdjvexPosition(int v1,int v2);
bool InsertVex(const VexType&);
bool InsertArc(const ArcType&, int v1, int v2 );
void show();
};
template<typename ArcType, typename VexType>
Graph<ArcType,VexType>::Graph(VexType *v, int num)
{
CurrentNumVexs=0;
CurrentNumArcs=0;
VexTable=new VexNode<ArcType,VexType>[num];
for(int i=0; i<num; ++i)
InsertVex(v[i]);
}
template<typename ArcType, typename VexType>
Graph<ArcType,VexType>::~Graph()
{
ArcNode<ArcType> *p;
for(int i=0; i<CurrentNumVexs; ++i){
p=VexTable[i].firstarc;
while(p!=NULL){
VexTable[i].firstarc=p->nextarc;
delete p;
p=VexTable[i].firstarc;
}
}
delete [] VexTable;
}
template<typename ArcType, typename VexType>
bool Graph<ArcType,VexType>::GetVexValue(VexType& result, int v)
{
if(v>=0 && v<CurrentNumVexs){
result=VexTable[v].data;
return true;
}
//cerr<<"Invalid vertex!"<<endl;
return false;
}
template<typename ArcType, typename VexType>
bool Graph<ArcType,VexType>::GetWeight(ArcType& result, int v1, int v2)
{
ArcNode<ArcType> *p;
if(v1>=0 && v1 < CurrentNumVexs && v2>=0 && v2<CurrentNumVexs){
p=VexTable[v1].firstarc;
while(p!=NULL){
if(p->adjvex==v2){
result=p->weight;
return true;
}
p=p->nextarc;
}
}
//cerr<<"Invalid arc!"<<endl;
return false;
}
template<typename ArcType, typename VexType>
int Graph<ArcType,VexType>::GetAdjvexPosition(int v)
{
ArcNode<ArcType> *p;
if(v>=0 && v<CurrentNumVexs){
p=VexTable[v].firstarc;
if(p!=NULL) return p->adjvex;
}
return -1;
}
template<typename ArcType, typename VexType>
int Graph<ArcType,VexType>::GetNextAdjvexPosition(int v1, int v2)
{
ArcNode<ArcType> *p;
if(v1>=0 && v2>=0 && v1<CurrentNumVexs && v2<CurrentNumVexs ){
p=VexTable[v1].firstarc;
while(p!=NULL){
if(p->adjvex==v2 && p->nextarc!=NULL)
return p->nextarc->adjvex;
else p=p->nextarc;
}
}
return -1;
}
template<typename ArcType, typename VexType>
bool Graph<ArcType,VexType>::InsertVex(const VexType& d)
{
if(CurrentNumVexs>=MaxVexs){
cerr<<"Exceed max vertex limit!"<<endl;
return false;
}
VexTable[CurrentNumVexs].data=d;
VexTable[CurrentNumVexs].firstarc=NULL;
++CurrentNumVexs;
return true;
}
template<typename ArcType, typename VexType>
bool Graph<ArcType,VexType>::InsertArc(const ArcType& w, int v1, int v2)
{
ArcNode<ArcType> *p, *q;
if(v1>=0 && v2>=0 && v1<CurrentNumVexs && v2<CurrentNumVexs ){
p=q=VexTable[v1].firstarc;
if(p==NULL){
VexTable[v1].firstarc=new ArcNode<ArcType>(v2,w);
return true;
}
while(p!=NULL){
if(p->adjvex==v2){
cerr<<"Arc exists , cannot insert!"<<endl;
return false;
}
q=p;
p=p->nextarc;
}
q->nextarc=new ArcNode<ArcType>(v2,w);
return true;
}
return false;
}
template<typename ArcType, typename VexType>
void Graph<ArcType,VexType>::show()
{
ArcNode<ArcType> *p;
for(int i=0;i<CurrentNumVexs;++i){
p=VexTable[i].firstarc;
cout<<"["<<i<<":"<<VexTable[i].data<<"]";
while(p!=NULL){
cout<<"--"<<p->weight<<"-->"<<"["<<p->adjvex<<"]";
p=p->nextarc;
}
cout<<endl;
}
}
int main()
{
char vex[]={'A','B','C','D','E'};
int num=sizeof(vex)/sizeof(vex[0]);
Graph<double,char>g(vex,num);
g.InsertArc(0.23,0,1);
g.InsertArc(0.45,1,3);
g.InsertArc(0.03,0,4);
g.InsertArc(0.44,4,2);
g.InsertArc(0.78,4,1);
g.InsertArc(0.92,3,2);
g.InsertArc(0.11,3,0);
g.InsertArc(0.03,3,4);
g.InsertArc(0.39,2,3);
g.show();
}
㈡ Excel中如何绘制薪酬结构图
1、打开Excel表格,看到如图的薪酬体系,每个等级的薪酬范围为最大值和最小值,那么为了做出云梯图的效果,我们需要插入上标、中间值和下标的辅助列,注意中间值为最大值和最小值的平均值。
㈢ 数据结构10 图
这一篇我们要总结的是图(Graph),图可能比我们之前学习的线性结构和树形结构都要复杂,不过没关系,我们一点一点地来总结。那么关于图,我将从以下几点进行总结:
1、图的定义
2、图相关的概念和术语
3、图的创建和遍历
什么是图呢?
图是一种复杂的非线性结构。
在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前驱和一个直接后继;
在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(父节点)及下一层的多个元素(孩子节点)相关;
而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。
图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E)
对于一个图,若每条边都是没有方向的,则称该图为无向图。图示如下:
因此,(V i ,V j )和(V j ,V i )表示的是同一条边。注意,无向图是用小括号,而下面介绍的有向图是用尖括号。
无向图的顶点集和边集分别表示为:
V(G)={V 1 ,V 2 ,V 3 ,V 4 ,V 5 }
E(G)={(V 1 ,V 2 ),(V 1 ,V 4 ),(V 2 ,V 3 ),(V 2 ,V 5 ),(V 3 ,V 4 ),(V 3 ,V 5 ),(V 4 ,V 5 )}
对于一个图G,若每条边都是有方向的,则称该图为有向图。图示如下:
因此,(V i ,V j )和(V j ,V i )是两条不同的有向边。注意,有向边又称为弧。
有向图的顶点集和边集分别表示为:
V(G)={V 1 ,V 2 ,V 3 }
E(G)={<V 1 ,V 2 >,<V 2 ,V 3 >,<V 3 ,V 1 >,<V 1 ,V 3 >}
我们将具有n(n-1)/2条边的无向图称为无向完全图。同理,将具有n(n-1)条边的有向图称为有向完全图。
对于无向图,顶点的度表示以该顶点作为一个端点的边的数目。比如,图(a)无向图中顶点V 3 的度D(V 3 )=3
对于有向图,顶点的度分为入度和出度。入度表示以该顶点为终点的入边数目,出度是以该顶点为起点的出边数目,该顶点的度等于其入度和出度之和。比如,图(b)中顶点V 1 的入度ID(V 1 )=1,出度OD(V 1 )=2,所以D(V 1 )=ID(V 1 )+OD(V 1 )=1+2=3
不管是无向图还是有向图,边数e、顶点数n和顶点的度数有如下关系:
拿图(b)来举例,由公式可以得到图G的边数e=(D(V 1 )+D(V 2 )+D(V 3 ))/2=(3+2+3)/2=4
故名思义,这个就不解释了。
路径,比如在无向图G中,存在一个顶点序列V p ,V i1 ,V i2 ,V i3 …,V im ,V q ,使得(V p ,V i1 ),(V i1 ,V i2 ),…,(V im ,V q )均属于边集E(G),则称顶点V p 到V q 存在一条路径。
路径长度,是指一条路径上经过的边的数量。
回路,指一条路径的起点和终点为同一个顶点。
连通图是指图G中任意两个顶点V i 和V j 都连通,则称为连通图。比如图(b)就是连通图。下面是一个非连通图的例子:
上图中,因为V 5 和V 6 是单独的,所以是非连通图。
强连通图是对于有向图而言的,与无向图的连通图类似。
带”权值”的连通图称为网。如图所示:
1.深度优先搜索遍历
深度优先搜索(DFS)遍历类似于树的前序遍历。其基本思路是:
①假设初始状态是图中所有顶点都未曾访问过,则可从图G中任意一顶点V为初始出发点,首先访问出发点V,并将其标记为已访问过。
②然后依次从V出发搜索V的每个邻接点W,若W未曾访问过,则以W作为新的出发点出发,继续进行深度优先遍历,直到图中所有和V有路径相通的顶点都被访问到。
③若此时图中仍有顶点未被访问,则另选一个未曾访问的顶点作为起点,重复上述步骤,直到图中所有顶点都被访问到为止。
图示如下:
注:红色数字代表遍历的先后顺序
如果采用邻接矩阵存储,则时间复杂度为O(n 2 );如果采用邻接表存储,时间复杂度为O(n+e)
2.广度优先搜索遍历
广度优先搜索遍历(BFS)类似于树的按层次遍历。其基本思路是:
①首先访问出发点V i
②接着依次访问V i 的所有未被访问过的邻接点V i1 ,V i2 ,V i3 ,…,V it 并均标记为已访问过。
③然后再按照V i1 ,V i2 ,… ,V it 的次序,访问每一个顶点的所有未曾访问过的顶点并均标记为已访问过,依此类推,直到图中所有和初始出发点V i 有路径相通的顶点都被访问过为止。
图示如下:
因此,图(f)采用广度优先搜索遍历以V 0 为出发点的顶点序列为:V 0 ,V 1 ,V 3 ,V 4 ,V 2 ,V 6 ,V 8 ,V 5 ,V 7
如果采用邻接矩阵存储,则时间复杂度为O(n 2 ),如果采用邻接表存储,则时间复杂度为O(n+e)
㈣ 怎么把excel数据做成柱形图
excel中将数据图表化,一般你所选的数据区中必须要有数值型数据的。如果是文字的话,应该不行吧,因为没有办法表示文字的大小数值。如果你的数据区中的数值式的文字,如'1,'21等,你可以将其格式转成数值型数据。(去掉数值前面的"'"号,或通过单元格格式来改),再看看你的图表,应该没有什么大问题了。但前提条件是必须要有数值(number)出现。如果只是一般文本。那实在是没有办法用柱形图来表示。制作双柱形图步骤1:录入所需数据之后,最重要的是要构造两列占位数据,如图所示。1,2月份的销量和收入数据,分别建立“销量占位”,“收入占位”两列数据,随便输入一些数值,但不要设置为0,最后再设置为0,否则会失效。 制作双柱形图步骤2:选择A1:E3的数据,即所有数据,插入图表,然后建立直方图。操作如图所示。 制作双柱形图步骤3:得到的直方图不是我们要的,更改坐标轴。选中直方图,在“图表工具”中选择“切换行/列”,得到我们想要的直方图。 制作双柱形图步骤4:选中其中一列,右击,选择“更改系列图表类型”。 制作双柱形图步骤5:将“收入(右轴)”,“收入占位”两列设置成次坐标轴。 制作双柱形图步骤6。
㈤ 如何画数据流图
先确定系统是啥,外部实体都有啥,然后找出外部实体与系统的数据流。这样就可以画出顶层的数据流图了,顶层数据流图一般只有外部实体,系统,以及外部实体与系统的数据流。
接下来是画0层图,0层图作画步骤:画0层图就是细化系统内部,把系统细分成加工和数据流以及文件。
数据流程图上所有图形符号必须是前面所述的四种基本元素。②数据流程图的主图必须含有前面所述的四种基本元素,缺一不可。③数据流程图上的数据流必须封闭在外部实体之间,外部实体可以是一个,也可以是多个。④处理过程至少有一个输入数据流和一个输出数据流。⑤任何一个数据流子图必须与它的父图上的一个处理过程对应,两者的输入数据流和输出数据流必须一致,即所谓“平衡”。⑥数据流程图上的每个元素都必须有名字。①把一个系统看成一个整体功能,明确信息的输入和输出。
㈥ 怎样做柱形图
excel中将数据图表化,一般你所选的数据区中必须要有数值型数据的。如果是文字的话,应该不行吧,因为没有办法表示文字的大小数值。如果你的数据区中的数值式的文字,如'1,'21等,你可以将其格式转成数值型数据。(去掉数值前面的"'"号,或通过单元格格式来改),再看看你的图表,应该没有什么大问题了。但前提条件是必须要有数值(number)出现。如果只是一般文本。那实在是没有办法用柱形图来表示。制作双柱形图步骤1:录入所需数据之后,最重要的是要构造两列占位数据,如图所示。1,2月份的销量和收入数据,分别建立“销量占位”,“收入占位”两列数据,随便输入一些数值,但不要设置为0,最后再设置为0,否则会失效。 制作双柱形图步骤2:选择A1:E3的数据,即所有数据,插入图表,然后建立直方图。操作如图所示。 制作双柱形图步骤3:得到的直方图不是我们要的,更改坐标轴。选中直方图,在“图表工具”中选择“切换行/列”,得到我们想要的直方图。 制作双柱形图步骤4:选中其中一列,右击,选择“更改系列图表类型”。 制作双柱形图步骤5:将“收入(右轴)”,“收入占位”两列设置成次坐标轴。 制作双柱形图步骤6。
㈦ 数据结构——图
转自: http://www.cnblogs.com/mcgrady/archive/2013/09/23/3335847.html
阅读目录
一,图的定义
二,图相关的概念和术语
三,图的创建和遍历
四,最小生成树和最短路径
五,算法实现
这一篇我们要总结的是图(Graph),图可能比我们之前学习的线性结构和树形结构都要复杂,不过没有关系,我们一点一点地来总结,那么关于图我想从以下几点进行总结:
1,图的定义?
2,图相关的概念和术语?
3,图的创建和遍历?
4,最小生成树和最短路径?
5,算法实现?
一,图的定义
什么是图呢?
图是一种复杂的非线性结构。
在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继;
在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关;
而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。
图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E)
二,图相关的概念和术语
1,无向图和有向图
对于一个图,若每条边都是没有方向的,则称该图为无向图。图示如下:
因此,(Vi,Vj)和(Vj,Vi)表示的是同一条边。注意,无向图是用小括号,而下面介绍的有向图是用尖括号。
无向图的顶点集和边集分别表示为:
V(G)={V1,V2,V3,V4,V5}
E(G)={(V1,V2),(V1,V4),(V2,V3),(V2,V5),(V3,V4),(V3,V5),(V4,V5)}
对于一个图G,若每条边都是有方向的,则称该图为有向图。图示如下。
因此,和是两条不同的有向边。注意,有向边又称为弧。
有向图的顶点集和边集分别表示为:
V(G)={V1,V2,V3}
E(G)={,,,}
2,无向完全图和有向完全图
我们将具有n(n-1)/2条边的无向图称为无向完全图。同理,将具有n(n-1)条边的有向图称为有向完全图。
3,顶点的度
对于无向图,顶点的度表示以该顶点作为一个端点的边的数目。比如,图(a)无向图中顶点V3的度D(V3)=3
对于有向图,顶点的度分为入度和出度。入度表示以该顶点为终点的入边数目,出度是以该顶点为起点的出边数目,该顶点的度等于其入度和出度之和。比如,顶点V1的入度ID(V1)=1,出度OD(V1)=2,所以D(V1)=ID(V1)+OD(V1)=1+2=3
记住,不管是无向图还是有向图,顶点数n,边数e和顶点的度数有如下关系:
因此,就拿有向图(b)来举例,由公式可以得到图G的边数e=(D(V1)+D(V2)+D(V3))/2=(3+2+3)/2=4
4,子图
故名思义,这个就不解释了。
5,路径,路径长度和回路
路径,比如在无向图G中,存在一个顶点序列Vp,Vi1,Vi2,Vi3…,Vim,Vq,使得(Vp,Vi1),(Vi1,Vi2),…,(Vim,Vq)均属于边集E(G),则称顶点Vp到Vq存在一条路径。
路径长度,是指一条路径上经过的边的数量。
回路,指一条路径的起点和终点为同一个顶点。
6,连通图(无向图)
连通图是指图G中任意两个顶点Vi和Vj都连通,则称为连通图。比如图(b)就是连通图。下面是一个非连通图的例子。
上图中,因为V5和V6是单独的,所以是非连通图。
7,强连通图(有向图)
强连通图是对于有向图而言的,与无向图的连通图类似。
8,网
带”权值”的连通图称为网。如图所示。
三,图的创建和遍历
1,图的两种存储结构
1) 邻接矩阵,原理就是用两个数组,一个数组保存顶点集,一个数组保存边集。下面的算法实现里边我们也是采用这种存储结构。如下图所示:
2) 邻接表,邻接表是图的一种链式存储结构。这种存储结构类似于树的孩子链表。对于图G中每个顶点Vi,把所有邻接于Vi的顶点Vj链成一个单链表,这个单链表称为顶点Vi的邻接表。
2,图的两种遍历方法
1) 深度优先搜索遍历
深度优先搜索DFS遍历类似于树的前序遍历。其基本思路是:
a) 假设初始状态是图中所有顶点都未曾访问过,则可从图G中任意一顶点v为初始出发点,首先访问出发点v,并将其标记为已访问过。
b) 然后依次从v出发搜索v的每个邻接点w,若w未曾访问过,则以w作为新的出发点出发,继续进行深度优先遍历,直到图中所有和v有路径相通的顶点都被访问到。
c) 若此时图中仍有顶点未被访问,则另选一个未曾访问的顶点作为起点,重复上述步骤,直到图中所有顶点都被访问到为止。
图示如下:
注:红色数字代表遍历的先后顺序,所以图(e)无向图的深度优先遍历的顶点访问序列为:V0,V1,V2,V5,V4,V6,V3,V7,V8
如果采用邻接矩阵存储,则时间复杂度为O(n2);当采用邻接表时时间复杂度为O(n+e)。
2) 广度优先搜索遍历
广度优先搜索遍历BFS类似于树的按层次遍历。其基本思路是:
a) 首先访问出发点Vi
b) 接着依次访问Vi的所有未被访问过的邻接点Vi1,Vi2,Vi3,…,Vit并均标记为已访问过。
c) 然后再按照Vi1,Vi2,… ,Vit的次序,访问每一个顶点的所有未曾访问过的顶点并均标记为已访问过,依此类推,直到图中所有和初始出发点Vi有路径相通的顶点都被访问过为止。
图示如下:
因此,图(f)采用广义优先搜索遍历以V0为出发点的顶点序列为:V0,V1,V3,V4,V2,V6,V8,V5,V7
如果采用邻接矩阵存储,则时间复杂度为O(n2),若采用邻接表,则时间复杂度为O(n+e)。
四,最小生成树和最短路径
1,最小生成树
什么是最小生成树呢?在弄清什么是最小生成树之前,我们需要弄清什么是生成树?
用一句语简单概括生成树就是:生成树是将图中所有顶点以最少的边连通的子图。
比如图(g)可以同时得到两个生成树图(h)和图(i)
知道了什么是生成树之后,我们就很容易理解什么是最小生成树了。所谓最小生成树,用一句话总结就是:权值和最小的生成树就是最小生成树。
比如上图中的两个生成树,生成树1和生成树2,生成树1的权值和为:12,生成树2的权值为:14,我们可以证明图(h)生成树1就是图(g)的最小生成树。
那么如何构造最小生成树呢?可以使用普里姆算法。
2,最短路径
求最短路径也就是求最短路径长度。下面是一个带权值的有向图,表格中分别列出了顶点V1其它各顶点的最短路径长度。
表:顶点V1到其它各顶点的最短路径表
从图中可以看出,顶点V1到V4的路径有3条(V1,V2,V4),(V1,V4),(V1,V3,V2,V4),其路径长度分别为15,20和10,因此,V1到V4的最短路径为(V1,V3,V2,V4)。
那么如何求带权有向图的最短路径长度呢?可以使用迪杰斯特拉(Dijkstra)算法。
㈧ 在Excel表格中怎么插入图表气泡图
你有没有在 Excel 工作表中插入过气泡图呢?在很多情况下,大部分用户选择了柱形图或者是折线图,其实在我们的软件中气泡图也是值得大家一试的。以下是我为您带来的关于在 Excel表格 中插入气泡图,希望对您有所帮助。
在Excel表格中插入气泡图这样的图怎么是做出来的?
这就是初级的气泡图,用Excel就能实现,用于对比分析。国内做得非常出色的气泡图,当属网易新闻的数读系列。
图表的配色和布局很好看,可读性非常高, 一目了然。
分享两种excel制作 方法 :圆形气泡图+矩阵气泡图。
圆形气泡图:
图中用圆的大小表示销量大小,呈圆形分布。
这里我们要了解一下利用Excel散点图画圆的两个公式
x轴=COS(PI*(ROW(1:1)-1)/12)
Y轴=SIN(PI*(ROW(1:1)-1)/12)
输入公式后向下复制24行(共25行),插入带线散点图,即可生成圆。
其中,你可以用通修改row(1:1)调整点的密集程度,点少一半?
x轴=COS(PI*(ROW(1:1) *2-1)/12)
Y轴=SIN(PI*(ROW(1:1) *2-1)/12)
明白这个原理,我们就可以构造数据源了。根据图形显示要求,把数据放在公式的对应位置。
选取黄色区域(不要选A列)-插入气泡图
删除坐标轴、网格线:
添加数据标签
选中气泡图 - 添加数据标签 - 选中显示气泡大小 - 标签包括单元格的值,选取文字部分所在区域。
对图表颜色、格式进行调整,并添加对应文字,最终效果如下图所示:
注:连线可以插入图形,文字可以用艺术字的变形。这里不加详述。
矩阵气泡图:
以最后这张举例。
我们观察可以发现:
? 图中由 16 个不同大小的圆状(深色)呈四行四列矩阵排列;
? 每个深色的圆状都有一个浅色且大小相同的圆作为背景;
? 图中文本标签和数字标签分别上下水平对齐,并由不同的颜色字体标识。
那么,我们用 Excel 能做出这种漂亮的图表吗?
当然可以!请跟着我的脚步往下走!
我们其实可以把这个图看作由 两组气泡图 叠加而成,如下图所示:
气泡图用于展示三个变量之间的关系。
绘制时将一个变量,放在横轴,另一个变量放在纵轴,而第三个变量则用气泡的大小来表示。
即: 用x,y两个变量数值来确定气泡的位置,用气泡值表示大小。 如下图所示:
▋ 作图数据准备
首先我们按照图,列出数据源,如 B:C 列;
然后来构造作图数据,如 E-J 列:
X1 值:由左至右的方向依次编号,如下图 E 列;Y1 值:从下至上的方向依次编号,如下图 F 列; 气泡值 1:=MAX(C$3:C$18) 下拉填充,如 G 列;气泡值 2:=C3,如H 列; Y2 值:=F3 0.35 下拉填充,如 I 列;Y3 值:=F3 0.12,如J 列。
注:这里的 0.35 和 0.12 作用是设置标签的位置,数值可以视情况手动调整。
▋ 作图步骤
? 首先选择数据 X1 值,Y1 值,气泡值 1,插入气泡图作为背景(背景圆)。
? 然后选择数据 X1 值,Y1 值,气泡值 2,增加另外一组气泡图(深色圆)。
? 选择数据 X1 值,Y2 值,气泡值 1,再增加一组气泡图,填充为无色。设置数据标签数据为 C3:C18,标签位置:靠下。
? 选择数据 X1 值,Y3 值,气泡值 1,再增加一组气泡图,填充为无色。
设置数据标签数据为 B3:B18,标签位置:靠下。
? 最后去掉网格线,图例,坐标轴,设置字体颜色、插入文本框,图形等,美化图表。
▋ 小结
? 当我们对同种类别作数据比较时(数据多,数值差异比较大)可以考虑使用该图表展示;
? 通过构造两列数值(横坐标和纵坐标)来确定气泡的位置,然后第三列值决定气泡的大小;
? 多次添加系列制作多组气泡图,既可以用来添加背景,还可以根据不同的需求,自由设置标签位置,起到视觉引导和大小比较的作用。
在Excel表格中怎么插入图表气泡图相关 文章 :
★ Excel如何插入气泡图
★ Excel表格中如何制作中国地图背景数据气泡图
★ excel2010制作气泡图的教程
★ excel2007怎么制作气泡图
★ Excel表格数据转换成三维气泡图的方法有哪些
★ excel制作半圆气泡信息图表的方法是什么
★ Excel2013怎么制作半圆气泡图
★ Excel2013中制作商务大气瀑布图效果的制作方法
★ excel07利用图表进行数据分析的教程
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm..com/hm.js?"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();㈨ excel怎么做层次结构图
Excel怎么制作层次结构图
下面是详细的操作步骤