㈠ 數據結構 圖如何創建啊
帶權圖(網)的鄰接表存儲的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怎麼製作層次結構圖
下面是詳細的操作步驟