精华内容
下载资源
问答
  • word饼形图表制作过程
    千次阅读
    2019-03-04 23:25:33

            使用VC编程来操纵Office。你可以实现诸如:Word文件打印、传送数据到Word文档、发送E-MAIL、自动产生表格、Excel数据统计、圆饼图,直方图显示、自动报表生成、播放幻灯、doc,txt,HTML,rtf文件转换、中文简繁体转换、拼音或笔画排序......只要是Office能够实现的功能,都可以在你写的程序中调用。仔细阅读下面的说明,并下载源文件进行参考,你就可以一步一步地掌握这个技术。祝朋友们学习快乐。

     

    MSDN搜:microsoft.office.interop.word
    Also:https://msdn.microsoft.com/zh-cn/library/Microsoft.Office.Interop.Word(v=office.11).aspx

     

    使用VC编程来操纵Office。你可以实现诸如:Word文件打印、传送数据到Word文档、发送E-MAIL、自动产生表格、Excel数据统计、圆饼图,直方图显示、自动报表生成、播放幻灯、doc,txt,HTML,rtf文件转换、中文简繁体转换、拼音或笔画排序......只要是Office能够实现的功能,都可以在你写的程序中调用。仔细阅读下面的说明,并下载源文件进行参考,你就可以一步一步地掌握这个技术。祝朋友们学习快乐。

    一、概念

    Microsoft 的 Office 产品中,都提供了OLE Automation 自动化程序的接口。如果你使用VB,VBA 和 Script 脚本调用 Office 功能的话,其实比使用 VC 调用要简单的多。比如在 WORD 中,调出菜单“工具(T)\宏(M)\录制新宏(R)”,这时候它开始记录你在 WORD 中任何菜单和键盘的操作,把你的操作过程保存起来,以便再次重复调用。而保存这些操作的记录,其实就是使用了 VBA 程序(Visual Basic for Application)。而我们下面要实现的功能,也同样要参考 VBA 的方法。

    二、结构层次

    为了更有逻辑,更有层次地操作 Office,Microsoft 把应用(Application)按逻辑功能划分为如下的树形结构

    Application(WORD 为例,只列出一部分)

      Documents(所有的文档)

            Document(一个文档)

                ......

      Templates(所有模板)

            Template(一个模板)

                ......

      Windows(所有窗口)

            Window

            Selection

            View

      Selection(编辑对象)

            Font

            Style

            Range

            ......

    只有了解了逻辑层次,我们才能正确的操纵 Office。举例来讲,如果给出一个VBScript语句是:

    application.ActiveDocument.SaveAs "c:\abc.doc"

    那么,我们就知道了,这个操作的过程是:第一步,取得Application;第二步,从Application中取得ActiveDocument;第三步,调用 Document 的函数 SaveAs,参数是一个字符串型的文件名。

    三、基本步骤

    (1)创建(或打开已有的)一个 MFC 的程序工程

    (2)Ctrl+W 执行 ClassWizard(本文按照 VC6 操作,例子程序也是在VC6 下编写测试的)

    (3)Add Class...\From a type Library... 在 Office 目录中,找到你想使用的类型库。(我使用的是 Office2000,其Word 的类型库文件,保存在 C:\Program Files\Microsoft Office\Office\MSWORD9.OLB)根据你 Office 的版本,可以使用下表列出的类型库文件

    Office 版本和类型

    类型库文件

    Office 版本和类型

    类型库文件

    Access 97Msacc8.olbPowerPoint 2000Msppt9.olb
    Jet Database3.5 DAO350.dllWord 2000Msword9.olb
    Binder 97Msbdr8.olbAccess 2002Msacc.olb
    Excel 97Excel8.olbExcel 2002Excel.exe
    Graph 97Graph8.olbGraph 2002Graph.exe
    Office 97Mso97.dllOffice 2002MSO.dll
    Outlook 97Msoutl97.olbOutlook 2002MSOutl.olb
    PowerPoint 97Msppt8.olbPowerPoint 2002MSPpt.olb
    Word 97Msword8.olbWord 2002MSWord.olb
    Access 2000Msacc9.olbOffice Access 2003Msacc.olb
    Jet Database 3.51DAO360.dllOffice Excel 2003Excel.exe
    Binder 2000Msbdr9.olbGraph 2003Graph.exe
    Excel 2000Excel9.olbOffice 2003MSO.dll
    Graph 2000Graph9.olbOffice Outlook 2003MSOutl.olb
    Office 2000Mso9.dllOffice PowerPoint 2003MSPpt.olb
    Outlook 2000Msoutl9.olbOffice Word 2003MSWord.olb

    (4)选择类型库文件后,在弹出的对话窗中继续选择要添加的类。具体选择什么类,要看你将来在程序中打算调用什么功能。当然,你也可以不用考虑这么多,用鼠标和Shift键配合,全部选择也可以。

    (5)初始化COM。方法一,找到App的InitInstance()函数,在其中添加 AfxOleInit()函数的调用;方法二,在需要调用COM功能的地方 CoInitialize(NULL),调用完毕后 CoUninitialize()。

    (6)在你需要调用 Office 功能函数的 cpp 文件中

    #include   // 为了方便操作 VARIANT 类型变量,使用 CComVariant 模板类

    #include "头文件.h"   // 具体的头文件名,是由装载类型库的文件名决定的。(鼠标双点包装类的文件,就可以看到)

    // 比如使用 msword9.olb类型库,那么头文件是 msword9.h

    (7)好了,现在开始写程序吧。另外要说明的是,步骤3和4,其实也可以使用 #import 方式引入类型库。

    四、实现技巧

    在书写调用 Office 函数的过程中,最困难的是确定函数的参数,一般情况下,参数都是 VARIANT 类型的变量指针。那么到底具体我们应该怎么写那?推荐两个方法,其一是阅读有关 VBA 的书籍;其二,是使用 Office 中自带的“宏”功能。强烈推荐大家使用第二个方法,把你要完成的功能,在 Office 的操作环境中,用宏录制下来,然后观察分析录制后的函数和参数,就可以在 VC 中使用了。举一个例子:

    1.ActiveDocument.SaveAs FileName:="Hello.doc", FileFormat:=wdFormatDocument _

    2., LockComments:=False, Password:="", AddToRecentFiles:=True, _

    3.WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _

    4.SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _

    5.False

    以上是在 Word 中录制的一个保存文件的宏,而在 VC 中对应的函数原型为

    1.void _Document::SaveAs(VARIANT* FileName, VARIANT* FileFormat, VARIANT* LockComments,

    2.VARIANT* Password, VARIANT* AddToRecentFiles, VARIANT* WritePassword,

    3.VARIANT* ReadOnlyRecommended, VARIANT* EmbedTrueTypeFonts, VARIANT* SaveNativePictureFormat,

    4.VARIANT* SaveFormsData, VARIANT* SaveAsAOCELetter)

    分析对照后,我们就能看出,参数 FileName 是字符串 VARIANT(VT_BSTR),参数 LockComments 是布尔VARIANT(VT_BOOL),等等。参数 FileFormat := wdFormatDocument 是什么类型那?其实这是一个表示保存的时候指定文件类型的常量,而且显然是 DWORD 类型VARIANT(VT_I4)。那么常量的数值又是多少那?很简单,写一个宏,调用函数 MsgBox 显示一下不就都知道啦?!

    五、步步为营

    特别提示一:编译执行前,一定要先关闭 KV 实时监视病毒的功能(KV 的程序会干扰我们的调用,瑞星的则没关系)。

    特别提示二:在例子程序中,为了表现程序的关键部分,没有或很少使用了条件判断。为了实现你程序的健壮性,请自己加上条件判断和异常处理。

    Step1:如何启动和关闭 WORD,及 VARIANT 的最基本的使用方法

    Step2:和 Step1 同样功能,用 CComVariant 改进了 VARIANT 的使用方式

    Step3:在 Step2 的基础上,新建一个 WORD 文档,并从程序中传送一些字符到 WORD

    Step4:在 Step3 的基础上,保存 WORD 文档

    Step5:一个小应用举例,把输入的汉字按照“笔画”排序

    Step6:一个小应用举例,盗窃正在使用的 WORD 文档

    以上这6个小程序中,都有详细的注释。大家阅读后慢慢体会并实验,你就可以自由地操纵任何一个 Office 啦。

    六、参考:Microsoft Office Development with Visual Studio 

    参考资料:

    http://msdn.microsoft.com/zh-cn/library/microsoft.office.interop.word(v=office.11).aspx

    http://bbs.csdn.net/topics/290025616

    http://blog.sciencenet.cn/blog-43777-318939.html

    http://www.cnitblog.com/lifw/articles/vcpp_officeword.html

    http://www.cnblogs.com/Raikkonen/archive/2010/05/19/1738980.html

    http://blog.csdn.net/zhaoshilei29/article/details/5946333


    ====================================================================

     

    1.实现技巧

    写Word文档,首先要从Word应用程序获取文档的类的对象,然后设置文档中接收文字位置,最后将文字写入Word文档。

    注:Microsoft Office 2003类型库msword.olb常用的_Application,_Document,Documents,Selection四个类

     

    按照添加类的步骤,将_Application应用程序类和Documents类和Selection类加进应用程序。

    在View菜单中,点击ClassWizard,然后进入Automation标签中点击Add Class,选择From A Type Library。找到Microsoft Office 2003类型库msword.olb,选择_Application,_Document,_Documents,Selection四个类,如有其他需要(例如画表也可选择其他的类)。
     

    Documents类是文档对象集类,是所有Document对象的集合。使用Documents对象集合的Add方法可以新建一篇空白文档并将返回的Document 对象添至Documents对象集合之中。

    Add方法的原型声明如下:

    LPDISPATCH  Add( VARIANT* Template,  VARIANT* NewTemplate,  VARIANT* DocumentType,  VARIANT* Visible)

    参数Template,指定新文档使用的模板名,如果忽略此参数则使用Normal模板。
     
    参数NewTemplate,如果此属性设置为 True 则将文档作为模板打开。默认值为 False。
     
    参数DocumentType其值可取下列 WdNewDocumentType常量之一。
     
    WdNewBlankDocument 创建一个空白文档,默认值。
     
    WdNewEmailMessage 新建一个电子邮件信息。
     
    wdNewWebPage 新建一个Web页。
     
    参数Visible,如果此参数为True,Microsoft Word将在可见窗口打开文档。如果此参数为False,Word仍会打开此文档但文档窗口的Visible属性变为False,默认值为True。

    Selection类对象用于选定文档的文字,然后对选定部分进行操作,如设置文字的格式或键入文字。Selection 对象代表窗体中的选定内容,每个窗体中只能有一个Selection 对象而且只能激活一个 Selection 对象。Selection 对象代表的选定内容既可以是文档中的一个区域也可以仅仅是一个插入点。通过Selection对象的TypeText和GetText可对Word文档进行读写操作。

    TypeText的函数作用为写Word文档,其函数的声明如下:

    void TypeText(LPCTSTR Text);

    GetText的函数的作用是读文档,其函数的声明如下:

    CString GetText();

     

     

     1. VC6的操作:


         在第(4)步后,VC6会自动生成"msword.h"和"msword.cpp"两个文件,同时在类视图中会生成你选择的类(譬如_Application _Document等等);


         此时你只要加入#include "msword.h",就完成了准备工作。


    2. VC2005\2008


         VC2005不会生成"msword.h"和"msword.cpp"这两个文件,取而代之的是生成"CApplication.h" "CDocument0.h"等一系列头文件;


         但如果你以为加入了#include "CApplication.h" ,便可以完成准备工作的话,那就大错特错了,此时编译会出现很多错误;


         该怎么办呢?


         把VC6中生成的"msword.h"和"msword.cpp"两个文件拷贝到VC2005工程文件夹目录中,并加入到工程中(项目-添加现有项);


         然后加上以下代码就一切OK了!

     

    ===================================================================

     

     

    作者:http://blog.csdn.net/zhaoshilei29/article/details/5946333

    ---------------------------------------

    首先,把我参考的两个地址放上来,博主写到很好,我这里只是把学到的东西做记录自己备查而已。

    用Visual C++操纵MS Word:

    http://www.cnblogs.com/scq2099yt/archive/2008/01/07/1028697.html

    MFC/VC++调用word进行报表制作:

    http://www.cnblogs.com/scq2099yt/archive/2008/01/07/1028717.html

     

    其次,说说重点:

    重点就是怎么把VBA_Sub MyReporter.bas里的VBA代码转换成WORD.OLE代码,上面的两篇文章写的很好,照着一步一步做就成了。

     

    下面,一步一步开始吧:

    1. 首先,要打开Word的宏记录功能。

    备注:在Word中,使用VBA为脚本的宏,可以使文件具有一定逻辑处理功能。例如自动生成及处理数据等。

    2. 然后创建一个新宏

    3. 记录一个宏,在记录好以后,可以对宏进行简单的编辑,想调试看运行结果时,点击“运行”按钮。这一步很重要,在把这个VBA脚本翻译成C++可执行的代码前,这里的逻辑就是最后生成Word文档的逻辑,因此,要仔细调试,把其中没有必要的步骤去除,尽量精简生成文档的步骤。

    4. 在最终获得一个这样的脚本后,就可以准备开始C++的编程了,这里,贴出我完成的脚本(为了不公开项目里的数据,这里我稍做改动,把数据相关的内容全部替换了)

    Sub MyReporter()
        Documents.Add DocumentType:=wdNewBlankDocument ' //生成一个空文档
        
        Selection.TypeText Text:="某某报表" ' //输入第1行内容
        Selection.TypeParagraph ' //换行
        Selection.TypeText Text:="行1:" ' //输入第2行内容
        Selection.TypeParagraph ' //换行
        Selection.TypeText Text:="行2:" ' //输入第3行内容
        Selection.TypeParagraph ' //换行
        Selection.TypeText Text:="行3:" ' //输入第4行内容
        Selection.TypeParagraph ' //换行
        Selection.TypeText Text:="行4:" ' //输入第5行内容
        Selection.TypeParagraph ' //换行
        Selection.TypeText Text:="行5" ' //输入第6行内容
        Selection.TypeParagraph ' //换行
        
        ' //添加一个6行4列的表格,使用默认样式 
        ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=6, NumColumns:= _
            4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
            wdAutoFitFixed
        
        ' //添加表的内容并设置表的格式
        ' //输入表内第1行内容 
        Selection.TypeText Text:="列1" ' //输入第1列内容
        Selection.MoveRight Unit:=wdCharacter, Count:=1 ' //向右移动鼠标到下一列
        Selection.TypeText Text:="列2" ' //输入第2列内容
        Selection.MoveRight Unit:=wdCharacter, Count:=1 ' //向右移动鼠标到下一列
        Selection.TypeText Text:="列3" ' //输入第3列内容
        Selection.MoveRight Unit:=wdCharacter, Count:=1 ' //向右移动鼠标到下一列 
        Selection.TypeText Text:="列4" ' //输入第4列内容
        ' //输入表内第2行内容 
        Selection.MoveDown Unit:=wdLine, Count:=1 ' //向下移动鼠标到下一行 
        Selection.MoveLeft Unit:=wdCharacter, Count:=3 ' //向左移动鼠标到第1列
        Selection.TypeText Text:="列1" ' //输入第1列内容
        Selection.MoveRight Unit:=wdCharacter, Count:=3 '// 向右移动鼠标到第4列
        Selection.TypeText Text:="列4" ' //输入第4列内容
        ' //输入表内第3行内容 
        Selection.MoveDown Unit:=wdLine, Count:=1 ' //向下移动鼠标到下一行
        Selection.MoveLeft Unit:=wdCharacter, Count:=3 ' //向左移动鼠标到第1列
        Selection.TypeText Text:="列1" ' //输入第1列内容
        Selection.MoveRight Unit:=wdCharacter, Count:=1 ' // 向右移动鼠标到第2列
        Selection.TypeText Text:="列2" '//输入第2列内容
        Selection.MoveRight Unit:=wdCharacter, Count:=1 ' // 向右移动鼠标到第3列
        Selection.TypeText Text:="列3" '//输入第3列内容
        Selection.MoveRight Unit:=wdCharacter, Count:=1  ' // 向右移动鼠标到第4列
        Selection.TypeText Text:="列4" '//输入第4列内容
        ' //输入表内第4行内容 
        Selection.MoveDown Unit:=wdLine, Count:=1 ' //向下移动鼠标到下一行
        Selection.MoveLeft Unit:=wdCharacter, Count:=3 ' //向左移动鼠标到第1列
        Selection.TypeText Text:="列1" ' //输入第1列内容
        Selection.MoveRight Unit:=wdCharacter, Count:=3 ' //向右移动鼠标到第4列
        Selection.TypeText Text:="列4" ' //输入第4列内容
        ' //输入表内第5行内容 
        Selection.MoveDown Unit:=wdLine, Count:=1 ' //向下移动鼠标到下一行
        Selection.MoveLeft Unit:=wdCharacter, Count:=3 ' //向左移动鼠标到第1列
        Selection.TypeText Text:="列1" ' //输入第1列内容
        Selection.MoveRight Unit:=wdCharacter, Count:=3 ' //向右移动鼠标到第4列
        Selection.TypeText Text:="列4" ' //输入第4列内容
        ' //输入表内第6行内容 
        Selection.MoveDown Unit:=wdLine, Count:=1 ' //向下移动鼠标到下一行
        Selection.MoveLeft Unit:=wdCharacter, Count:=3 ' //向左移动鼠标到第1列
        Selection.TypeText Text:="列1" ' //输入第1列内容
        Selection.MoveRight Unit:=wdCharacter, Count:=3 ' //向右移动鼠标到第4列
        Selection.TypeText Text:="列4" ' //输入第4列内容
        ' //设置表的格式 
        Selection.MoveUp Unit:=wdLine, Count:=5 ' //向上移动鼠标到表的第1行(目前鼠标在第1行第4列最后一个字符后)
        Selection.MoveLeft Unit:=wdCharacter, Count:=15 ' //向左移动鼠标到第1列的第1个字符前
        Selection.MoveDown Unit:=wdLine, Count:=5, Extend:=wdExtend ' //向下选取5行,共选取6行(执行这句后,第1列全部选中)
        Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend ' //向右选取3列,共选取4列(执行这句后,整个表被选中)
        Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter ' //设置对齐方式为“居中”
        
        ' //开始设置表以前内容的格式 
        Selection.MoveUp Unit:=wdLine, Count:=1 ' //向上移动鼠标到上一行
        Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter '//设置此行为“居中”格式 
        Selection.MoveUp Unit:=wdLine, Count:=5 '// 向上移动鼠标到第1行
        Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter '//设置标题行为“居中”格式
        Selection.EndKey Unit:=wdLine ' //将鼠标定位到第1行末
        Selection.HomeKey Unit:=wdLine, Extend:=wdExtend ' //将鼠标定位到第1行首,同时选取整行
        Selection.Font.Bold = wdToggle ' //设置标题行为“粗体”    
        Selection.Font.Size = 15 ' //设置标题行字号为15(小三号) 
        Selection.MoveDown Unit:=wdLine, Count:=1 ' //向下移动鼠标到正文第1行
        Selection.HomeKey Unit:=wdLine ' //将鼠标定位到正文第1行首,(第2行行首) 
        Selection.MoveDown Unit:=wdLine, Count:=11, Extend:=wdExtend ' //向下选取除标题行外的全部内容
        Selection.Font.Size = 12 ' //设置字号为12(小四号)
        Selection.WholeStory '// 选取全部内容
        Selection.Font.Name = "宋体" '// 设置全部内容为“宋体”
        
        ' //保存文件为《某某报表.doc》到默认位置,WORD的默认路径是“我的文档”
        ActiveDocument.SaveAs FileName:="某某报表.doc", FileFormat:= _
            wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
            True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
            False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
            SaveAsAOCELetter:=False
            
        ' 退出程序,关闭Word
        Application.Quit
    End Sub

    5. 这就是最后一步了,就是把上面的VBA编程C++可执行的代码。当然,在生成这个工程的时候,一定要添加外部的库,这里,在MFC中操作WORD2003的库使用的是 MSWORD.OLB ,一般情况下,可以在OFFICE所在的文件夹下,通过搜索获得。对于如何添加这个外部链接库,这里不做记录了,会MFC的人,这个是基本功。那么在生成MFC工程后,把上面的VBA代码,一条一条翻译成C++的代码就行了,以下是翻译的结果:

    (把以下代码放到一个事件中,比如对一个Button的单击响应事件中,就可以运行了)

     //****待用的操作WORD的 常量
     const int wdCharacter = 1;
     const int wdLine = 5;
     const int wdAlignParagraphCenter = 1;
     const int wdExtend = 1;
     const int wdToggle = 9999998;
     const int wdFormatDocument = 0;
     const int wdWord9TableBehavior = 1;
      const int wdAutoFitFixed = 0;
     const int wdNULL = 0;
     const int wdNewBlankDocument = 0;
     const int wdWindowStateMinimize = 2;

     //****待用的操作WORD的 变量 
     _Application wordApp;
        Documents wordDocs;
        _Document wordDoc;
        Selection wordSelection;
     Range wordRange;
     Tables wordTables;
     Table wordTable;
     Cell wordCell;
     Cells wordCells;
     _Font wordFont;
     Shading wordShading;
     Paragraphs wordParagraphs;

     //****创建word application实例,失败的话返回false
     if (!wordApp.CreateDispatch(_T("Word.Application"))) 
     {
      AfxMessageBox("Word CreateDispatch Failed!");  //显示错误信息
      return FALSE; //返回false
     }     
     
     wordDocs=wordApp.GetDocuments();//获得 documents 实例 

     //****添加新的空白文档(调用COM)
     //(参考自:http://www.cnblogs.com/scq2099yt/archive/2008/01/07/1028717.html
     CComVariant tpl(_T("")),Visble,DocType(0),NewTemplate(false);
     wordDoc=wordDocs.Add(&tpl,&NewTemplate,&DocType,&Visble);
     wordSelection=wordApp.GetSelection(); //获得 wordSelection 实例

     //****添加文字 
     wordSelection.TypeText("某某报表"); //输出1行
     wordSelection.TypeParagraph(); //换行
     wordSelection.TypeText("行1:"); //输出2行
     wordSelection.TypeParagraph(); //换行
     wordSelection.TypeText("行2:");  //输出3行
     wordSelection.TypeParagraph(); //换行
     wordSelection.TypeText("行3:"); //输出4行 
     wordSelection.TypeParagraph(); //换行
     wordSelection.TypeText("行4:"); //输出5行
     wordSelection.TypeParagraph(); //换行
     wordSelection.TypeText("行5"); //输出6行
     wordSelection.TypeParagraph(); //换行
     
     //****插入表格 
     wordTables=wordDoc.GetTables(); //获得表格
     wordRange = wordSelection.GetRange();
     //添加一个6行4列的表格,使用默认样式
     wordTables.Add(wordRange, 
      6, // 行数
      4, // 列数
      COleVariant((short)wdWord9TableBehavior),
      COleVariant((short)wdAutoFitFixed)); 
     /*** 注意 COleVariant((short)XXX) 这个方法可以把int型转换为 VARIANT* 类型 ***/
     
     //添加表的内容并设置表的格式
     //输入表内第1行内容 
     wordSelection.TypeText("列1"); //输入第1列内容
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)1), 
      COleVariant((short)wdNULL)); //向右移动鼠标到下一列
     wordSelection.TypeText("列2"); //输入第2列内容
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)1), 
      COleVariant((short)wdNULL)); //向右移动鼠标到下一列
     wordSelection.TypeText("列3"); //输入第3列内容
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)1),
      COleVariant((short)wdNULL)); //向右移动鼠标到下一列
     wordSelection.TypeText("列4"); //输入第4列内容 
     //输入表内第2行内容 
     wordSelection.MoveDown(COleVariant((short)wdLine), 
      COleVariant((short)1),
      COleVariant((short)wdNULL)); //向下移动鼠标到下一行
     wordSelection.MoveLeft(COleVariant((short)wdCharacter), 
      COleVariant((short)3),
      COleVariant((short)wdNULL)); //向左移动鼠标到第1列
        wordSelection.TypeText("列1"); //输入第1列内容    
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)3), 
      COleVariant((short)wdNULL)); //向右移动鼠标到第4列
     wordSelection.TypeText("列4"); //输入第4列内容
     //输入表内第3行内容 
     wordSelection.MoveDown(COleVariant((short)wdLine), 
      COleVariant((short)1),
      COleVariant((short)wdNULL)); //向下移动鼠标到下一行
     wordSelection.MoveLeft(COleVariant((short)wdCharacter), 
      COleVariant((short)3),
      COleVariant((short)wdNULL)); //向左移动鼠标到第1列 
        wordSelection.TypeText("列1"); //输入第1列内容    
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)1), 
      COleVariant((short)wdNULL)); //向右移动鼠标到第2列
     wordSelection.TypeText("列2"); //输入第2列内容
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)1), 
      COleVariant((short)wdNULL)); //向右移动鼠标到第3列
     wordSelection.TypeText("列3"); //输入第3列内容
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)1), 
      COleVariant((short)wdNULL)); //向右移动鼠标到第4列
     wordSelection.TypeText("列4"); //输入第4列内容
     //输入表内第4行内容 
     wordSelection.MoveDown(COleVariant((short)wdLine), 
      COleVariant((short)1),
      COleVariant((short)wdNULL)); //向下移动鼠标到下一行
     wordSelection.MoveLeft(COleVariant((short)wdCharacter), 
      COleVariant((short)3),
      COleVariant((short)wdNULL)); //向左移动鼠标到第1列
        wordSelection.TypeText("列1"); //输入第1列内容    
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)3), 
      COleVariant((short)wdNULL)); //向右移动鼠标到第4列    
     wordSelection.TypeText("列4"); //输入第4列内容
     //输入表内第5行内容 
     wordSelection.MoveDown(COleVariant((short)wdLine), 
      COleVariant((short)1),
      COleVariant((short)wdNULL)); //向下移动鼠标到下一行
     wordSelection.MoveLeft(COleVariant((short)wdCharacter), 
      COleVariant((short)3),
      COleVariant((short)wdNULL)); //向左移动鼠标到第1列
        wordSelection.TypeText("列1"); //输入第1列内容    
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)3), 
      COleVariant((short)wdNULL)); //向右移动鼠标到第4列    
     wordSelection.TypeText("列4"); //输入第4列内容
     //输入表内第6行内容 
     wordSelection.MoveDown(COleVariant((short)wdLine), 
      COleVariant((short)1),
      COleVariant((short)wdNULL)); //向下移动鼠标到下一行
     wordSelection.MoveLeft(COleVariant((short)wdCharacter), 
      COleVariant((short)3),
      COleVariant((short)wdNULL)); //向左移动鼠标到第1列
        wordSelection.TypeText("列1"); //输入第1列内容    
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)3), 
      COleVariant((short)wdNULL)); //向右移动鼠标到第4列
     wordSelection.TypeText("列4"); //输入第4列内容
     //设置表的格式
     wordSelection.MoveUp(COleVariant((short)wdLine), 
      COleVariant((short)5),
      COleVariant((short)wdNULL)); //向上移动鼠标到表的第1行(目前鼠标在第一行第4列最后一个字符后)
     wordSelection.MoveLeft(COleVariant((short)wdCharacter), 
      COleVariant((short)15),
      COleVariant((short)wdNULL)); //向左移动鼠标到第1列的第1个字符前 
     wordSelection.MoveDown(COleVariant((short)wdLine), 
      COleVariant((short)5),
      COleVariant((short)wdExtend)); //向下选取5行,共选取6行(执行这句后,第1列全部选中)
     wordSelection.MoveRight(COleVariant((short)wdCharacter), 
      COleVariant((short)3), 
      COleVariant((short)wdExtend)); //向右选取3列,共选取4列(执行这句后,整个表被选中)
     wordParagraphs = wordSelection.GetParagraphFormat(); //获得对齐方式实例
     wordParagraphs.SetAlignment(wdAlignParagraphCenter); //设置表中的全部内容为“居中”
        
     //开始设置表以前内容的格式 
     wordSelection.MoveUp(COleVariant((short)wdLine), 
      COleVariant((short)1),
      COleVariant((short)wdNULL)); //向上移动鼠标到上一行
        wordParagraphs = wordSelection.GetParagraphFormat(); //获得对齐方式实例 
     wordParagraphs.SetAlignment(wdAlignParagraphCenter); //设置此行为“居中”格式 
        wordSelection.MoveUp(COleVariant((short)wdLine), 
      COleVariant((short)5),
      COleVariant((short)wdNULL)); // 向上移动鼠标到第1行
     wordParagraphs = wordSelection.GetParagraphFormat(); //获得对齐方式实例
     wordParagraphs.SetAlignment(wdAlignParagraphCenter); //设置标题行为“居中”
     wordSelection.EndKey(COleVariant((short)wdLine),
      COleVariant((short)wdNULL)); //将鼠标定位到第1行末
     wordSelection.HomeKey(COleVariant((short)wdLine),
      COleVariant((short)wdExtend)); //将鼠标定位到第1行末
     wordFont = wordSelection.GetFont(); //获得字体实例
     wordFont.SetBold(wdToggle); //设置标题行为“粗体”     
     wordFont.SetSize(15.0); //设置标题行字号为15(小三号)
     wordSelection.MoveDown(COleVariant((short)wdLine), 
      COleVariant((short)1),
      COleVariant((short)wdNULL)); //向下移动鼠标到正文第1行
     wordSelection.HomeKey(COleVariant((short)wdLine),
      COleVariant((short)wdNULL)); //将鼠标定位到正文第1行首,(第2行行首) 
     wordSelection.MoveDown(COleVariant((short)wdLine), 
      COleVariant((short)11),
      COleVariant((short)wdExtend)); //向下选取除标题行外的全部内容
     wordFont = wordSelection.GetFont(); //获得字体实例 
     wordFont.SetSize(12.0); //设置标题行字号为12(小四号)
     wordSelection.WholeStory(); // 选取全部内容
     wordFont = wordSelection.GetFont(); //获得字体实例
     wordFont.SetName("宋体"); //设置全部内容为“宋体”


     //保存文件为《某某报表.doc》到默认位置,和此程序在一起 
     CString fileName = "//某某报表.doc";
     CString fullFileName = GGetAppPath() + fileName;
     wordDoc.SaveAs(COleVariant(fullFileName), //FileName
      COleVariant((short)wdFormatDocument), //FileFormat
      COleVariant((short)FALSE), //LockComments
      COleVariant(""), //Password
      COleVariant((short)FALSE), //AddToRecentFiles
      COleVariant(""), //WritePassword
      COleVariant((short)FALSE), //ReadOnlyRecommended 
      COleVariant((short)FALSE), //EmbedTrueTypeFonts 
      COleVariant((short)FALSE), //SaveNativePictureFormat 
      COleVariant((short)FALSE), //SaveFormsData 
      COleVariant((short)FALSE), //SaveAsAOCELetter
      COleVariant((short)wdNULL), //Encoding 
      COleVariant((short)FALSE), //InsertLineBreaks
      COleVariant((short)FALSE), //AllowSubstutitions,
      COleVariant((short)wdNULL), //LineEnding
      COleVariant((short)wdNULL) //AddBiDiMarks
      );
     
     //退出程序,关闭Word
     wordApp.Quit(COleVariant((short)wdNULL),
      COleVariant((short)wdNULL),
      COleVariant((short)wdNULL));

     return TRUE; // 生成成功,返回TRUE

    6. 最后,编译,调试,运行,哈哈,最后,我生成了一个这样的表

     

    =========================================================

    使用word进行数据报告的制作可谓非常方便,word具有非常强大的编辑、排版功能。使用word能够制作出内容丰富、样式精美的报告。我们在工作中当然会有报表报告的需求,如果能够在MFC/VC++里面能够调用word进行word格式报告的自动生成,岂不是一件非常惬意的事情。                       

            我在工作当中需要对大量的数据或者各种测试数据进行统计分析,最终的统计分析结果总归要汇总为一份报告,不管是内部使用也好还是外部提供给客户也好,一份内容翔实、格式精美的报告自然必不可少。我对MFC/VC++也不是高手,只是业余爱好自己动动手做些东西。自然,低于VC操作word可谓完全没有经验,在网络上面也查找了很多资料,都是些只言片语,不能真正的领略通过VC使用word的方法。于是自己摸索了几个礼拜,可谓耗时甚长,劳心劳力啊。MS的东西,封装的也太严实了,对于函数部分只有些许的简单介绍,往往看的云里雾里。没有实践还是不行啊!体会自己的经历,虽然辛苦但也有收获。不想其他朋友再继续走我走过的路,浪费时间、精力,故成文以共享。
         

    废话少说,进入正题吧。
     第一步,当然我们需要首先导入word需要的库。通过ClassWizard->Add Class选择From a Type Library…定位需要的库文件导入。本例应该使用C:"Program Files"Microsoft Office"OFFICE11"MSWORD.OLB,在这里尽可选择所有的类导入,反正用的时候都有了,呵呵。完成这一步,我们得到两个文件msword.h和msword.cpp,那就加入你的工程吧。
                             
    说明:如果需要在VC++/MFC开发程序操作word/excel等office元素,那么需要对必要的类型库进行导入.下面是office系列的类型库参考,导入类型库时候请选择正确的类型库进行导入.                      

    第二步,进入具体使用实践阶段。激动人心的时刻到来了,呵呵。不过别忘记把你的H文件#Include进来。下面是我的一个例子,从我具体的工程当中抽取出来供各位参考。有些地方我会简要解释。还等什么,赶紧试验一下代码吧。修改一下就是你的报告了,开心吧。
     BOOLCMDIDemoApp::OnMakeReport()
      {
                                       _ApplicationwordApp;

                                      DocumentswordDocs;

                                      _DocumentwordDoc;

                                      SelectionwordSelection;

                                      RangewordRange;

                                      TableswordTables;

                                      TablewordTable;     

                                      CellwordCell;   

                                      CellswordCells;

                                      //Paragraphs wordParagraphs;

                                      //Paragraph wordParagraph;

                                      _FontwordFont;

                                      ShadingwordShading;

                                      intnRow=0;

                                      COleVariantvTrue((short)TRUE), 
                                      vFalse((short)FALSE), 
                                      vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR); 
                                      
                      CComVariantdefaultBehavior(1),AutoFitBehavior(0);
                                      //创建word application实例
                                      if 
                      (!wordApp.CreateDispatch(_T("Word.Application"))) 
                                      {
                                              AfxMessageBox("Word CreateDispatch 
                      Failed!");
                                              returnFALSE;
                                      }     
                                      wordApp.SetVisible(TRUE);//make visible
                                      wordApp.Activate();//激活
                                      wordDocs=wordApp.GetDocuments();//get 
                      documents object
                                      CStringstrDocTemplate;
                                      CStringstrPath;
                                      charszFullPath[_MAX_PATH];
                                      
    ::GetModuleFileName(NULL,szFullPath,_MAX_PATH);
                                      strDocTemplate.Format("%s",szFullPath);
                                      intnPos=strDocTemplate.ReverseFind('""');
                                      strDocTemplate=strDocTemplate.Left(nPos);
                                      strPath=strDocTemplate;
                                      TRACE1("%s"n",strDocTemplate);
                                      //     
                      strDocTemplate+="""Template""Report.doc";
                                      //     
                      wordDoc=wordDocs.Open(COleVariant(strDocTemplate),&vOpt,&vOpt,&vOpt,&vOpt,
                                      //            
                      &vOpt,&vOpt,&vOpt,&vOpt,&vOpt,&vOpt,&vTrue,&vOpt,&vOpt,&vOpt,&vOpt);
                                      
                      CComVarianttpl(_T("")),Visble,DocType(0),NewTemplate(false);
                                      
                      wordDoc=wordDocs.Add(&tpl,&NewTemplate,&DocType,&Visble);
                                      wordSelection=wordApp.GetSelection();
                                      
                      //wordTables.AttachDispatch(wordDoc.GetTables());
                                      wordTables=wordDoc.GetTables();
                                      //wordParagraphs = wordDoc.GetParagraphs();
                                      //wordParagraph=wordParagraphs.GetLast();
                                      //wordRange=wordParagraph.GetRange();
                                      
                      //wordSelection.EndKey(COleVariant((short)6),COleVariant((short)0));
                                      //move insertion point to the end of the story
                                      /*
                                      wdUnits:
                                      wdCharacter=1   
                                      wdWord=2
                                      wdSentence=3
                                      wdParagraph=4
                                      wdSection=8
                                      wdStory=6
                                      wdCell=12
                                      wdColumn=9
                                      wdRow=10
                                      wdTable=15       
                                      wdMovementType:
                             
                                      wdMove=0
                                      wdExtend=1       
                                      */
                                      //move to end of story
                                      
                      wordSelection.EndOf(COleVariant((short)6),COleVariant((short)0));
                                      //1.1 RxLev Full 
                                      wordSelection.TypeText("1. 统计报告");
                                      
                      wordSelection.HomeKey(&CComVariant(5),&CComVariant(1));
                                      //Format the line with selection
                                      wordFont = wordSelection.GetFont();
                                      wordFont.SetBold(9999998);//wdToggle
                                      
                      wordSelection.EndOf(&CComVariant(5),&CComVariant(0));
                                      wordSelection.TypeParagraph();    
                                      wordSelection.TypeText("(1.1). 分段统计");
                                      wordSelection.TypeParagraph();
                                      wordFont.SetBold(9999998);//wdToggle
                                      wordRange=wordSelection.GetRange();
                                       //add table
                                      //nRow=m_nRange1+1;
         wordTable=wordTables.Add(wordRange,5/*row*/,4/*column*/,&defaultBehavior,&AutoFitBehavior);
                                      wordRange=wordTable.GetRange();
                                      
                      //wordRange.MoveEnd(COleVariant((short)15),COleVariant((short)1));
                                      //wordRange.Select();
                                      //move end of table
                                      
                      //wordSelection.EndOf(COleVariant((short)15),COleVariant((short)0));
                                      //insert rows
                                      
                      //wordSelection.InsertRowsBelow(COleVariant((short)5));
                                      //选择第一个单元,进而选择第一行进行格式化
                                      wordCell=wordTable.Cell(1,1);
                                      wordCell.Select();
                                      //select the row with current selection
                                      
                      wordSelection.EndKey(&CComVariant(10),&CComVariant(1));
                                      //Format the row with selection
                                      //wordFont = wordSelection.GetFont();
                                      wordFont.SetBold(9999998);//wdToggle
                                      wordCells=wordSelection.GetCells();
                                      wordShading = wordCells.GetShading();
                                      wordShading.SetTexture(0);
                                      
                      wordShading.SetBackgroundPatternColor(14737632);//15987699 
                      14737632 adColorBlue
                                      
                      wordShading.SetForegroundPatternColor(-16777216);//-16777216 
                      wdColorAutomatic
                                      //move to end of table
                                      
                      //wordSelection.EndOf(COleVariant((short)15),COleVariant((short)0));
                                      //wordParagraph=wordParagraphs.GetLast();
                                      //wordRange=wordParagraph.GetRange();
                                      
                      //wordRange.MoveEnd(COleVariant((short)4),COleVariant((short)1)); 
                           
                                      //wordRange.SetText("Test");
                                      //wordSelection=wordApp.GetSelection();
                                      
                      //wordSelection.MoveEnd(COleVariant((short)6),COleVariant((short)1));
                                      wordCell=wordTable.Cell(1,1);
                                      wordCell.Select();
                                      wordSelection.TypeText("统计项目");
                                      
                      wordSelection.MoveRight(&CComVariant(12),&CComVariant(1),&CComVariant(0));
                                      wordSelection.TypeText("采样");
                                      
                      wordSelection.MoveRight(&CComVariant(12),&CComVariant(1),&CComVariant(0));
                                      wordSelection.TypeText("百分比");
                                      
                      wordSelection.MoveRight(&CComVariant(12),&CComVariant(1),&CComVariant(0));
                                      wordSelection.TypeText("累计百分比");
                                      
                      wordSelection.EndOf(COleVariant((short)6),COleVariant((short)0));
                                      wordSelection.TypeParagraph();    
                                      wordSelection.TypeText("(1.2). 分段统计");
                                      
                      wordSelection.HomeKey(&CComVariant(5),&CComVariant(1));
                                      /Format the line with selection
                                      wordFont = wordSelection.GetFont();
                                      wordFont.SetBold(9999998);//wdToggle
                                      
                      wordSelection.EndOf(&CComVariant(5),&CComVariant(0));
                                      wordSelection.TypeParagraph();
                                      wordFont.SetBold(9999998);//wdToggle
                                      wordRange=wordSelection.GetRange();
                                      //add table
                                      //nRow=m_nRange1+1;
                                      
                      wordTable=wordTables.Add(wordRange,5/*row*/,4/*column*/,&defaultBehavior,&AutoFitBehavior);
                                      wordRange=wordTable.GetRange();
                                      //选择第一个单元,进而选择第一行进行格式化
                                      wordCell=wordTable.Cell(1,1);
                                      wordCell.Select();
                                      //select the row with current selection
                                      
                      wordSelection.EndKey(&CComVariant(10),&CComVariant(1));
                                      //Format the row with selection
                                      wordFont = wordSelection.GetFont();
                                      wordFont.SetBold(9999998);
                                      wordCells=wordSelection.GetCells();
                                      wordShading = wordCells.GetShading();
                                      wordShading.SetTexture(0);
                                      
                      wordShading.SetBackgroundPatternColor(14737632);//15987699
                                      
                      wordShading.SetForegroundPatternColor(-16777216);
                                      wordCell=wordTable.Cell(1,1);
                                      wordCell.Select();
                                      wordSelection.TypeText("Range");
                                      
                      wordSelection.MoveRight(&CComVariant(12),&CComVariant(1),&CComVariant(0));
                                      wordSelection.TypeText("Samples");
                                      
                      wordSelection.MoveRight(&CComVariant(12),&CComVariant(1),&CComVariant(0));
                                      wordSelection.TypeText("Percentage");
                                      
                      wordSelection.MoveRight(&CComVariant(12),&CComVariant(1),&CComVariant(0));
                                      wordSelection.TypeText("Calculation");
                                      //Save document as report
                                      SYSTEMTIMEsysTime;
                                      GetLocalTime(&sysTime);
                                      CStringstrReport;
                                      strReport.Format("%d年-%d月-%d日 %d-%d-%d 
                      报告",sysTime.wYear,sysTime.wMonth,
                                      
                      sysTime.wDay,sysTime.wHour,sysTime.wMinute,sysTime.wSecond);
                                      strReport=strPath+""""+strReport;
                                      
                      wordDoc.SaveAs(COleVariant(strReport),COleVariant((short)0),vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);
                                      //Release com
                                      wordFont.ReleaseDispatch();
                                      wordCells.ReleaseDispatch();
                                      wordShading.ReleaseDispatch();
                                      wordTable.ReleaseDispatch();
                                      wordTables.ReleaseDispatch();
                                      wordRange.ReleaseDispatch();
                                      wordSelection.ReleaseDispatch();
                                      wordDoc.RecheckSmartTags();
                                      wordDocs.ReleaseDispatch();
                                      wordApp.ReleaseDispatch();
                                      returnTRUE;
                              }
                              注释如下:
                              
    1.使用之前比忘记先进行COM环境的初始化,最好放在BOOLCMDIDemoApp::InitInstance()里吧。
         //Initialize COM context
          if (FAILED(::CoInitialize(NULL)))
          {
                AfxMessageBox("Initialize COM context failed!");
                returnFALSE;}
    2.注意几个函数的用法:
       a) wordSelection.EndOf(COleVariant((short)6),COleVariant((short)0));
       b)wordSelection.EndKey(&CComVariant(10),&CComVariant(1));
       c) wordSelection.HomeKey(&CComVariant(5),&CComVariant(1));
       d) wordTable=wordTables.Add(wordRange,5/*row*/,4/*column*/,&defaultBehavior,&AutoFitBehavior);
                              
       这几个函数可以说是我收获最大的地方了,EndOf/EndKey/HomeKey实现了当前焦点的任意移动,比如到一个文档的末尾或者行尾、表格的操作位置等。举例来说:EndOf  (VARIANT* Unit, VARIANT* Extend) 
       其第二个参数Extend决定了你是单纯的移动光标还是扩展移动选中内容。通过VBA参考,你可以知道wdMove=0 wdExtend=1,这样就可以决定是移动还是扩展选择内容了。当然还有其他很多操作可以摸索,大可以先用word的宏录制,然后编写自己的VC代码,不过确实是个繁琐的过程,很多VBA常量需要查找具体的value替换。通过预先的模版,你可以实现打开一个word模版,然后添加你自己的内容,灵活应用。然后保存为自己的报告。请参阅我的例子自己实现吧。Enjoy it by yourself...... J由于时间关系,我还没有摸索通如何在word报告中插入图表(chart/bar/pie)以及如何插入图片jpg等,这样就可以做出图文并茂的报告了。如果你有经验,欢迎交流共享。

     

     

    来源:http://www.cnblogs.com/For-her/p/3499778.html

    更多相关内容
  • 2.5 在PowerPoint中制作立体效果3:使用PowerPoint2007的预设(P70) 第三章:PPT动画教程 3.1 PowerPoint动画自学教程(P74) 3.2 谈PPT中的动画创意 (P76) 3.3 PPT动画中的图片处理(P78) 第四章:...
  • 数据可视化的爱好者Severino Ribecca,他在自己的网站上收录了 60 种可视化图表样式以及它们分别适用于什么样的场景,并且推荐了相应的制作工具。值得一看。点阵点阵图表 (Dot Matrix Chart) 以点为单位显示离散...

    可视化图表种类如此之多,什么场景下应该用什么图表展示,是一个让人头秃的难题。

    数据可视化的爱好者Severino Ribecca,他在自己的网站上收录了 60 种可视化图表样式以及它们分别适用于什么样的场景,并且推荐了相应的制作工具。

    值得一看。

    点阵图

    77ccb1f7eeac438eea19d42d9fad842b.png

    点阵图表 (Dot Matrix Chart) 以点为单位显示离散数据,每种颜色的点表示一个特定类别,并以矩阵形式组合在一起。

    适合用来快速检视数据集中不同类别的分布和比例,并与其他数据集的分布和比例进行比较,让人更容易找出当中模式。

    点数图

    c2cbc6aaaa60ecfce2f0874b7839a0c1.png

    点数图 (Point & Figure Charts)也称为「P&F 图」,使用由 X 和 O 符号组成的一系列方格来显示特定资产的供需关系。

    这种图表与时间无直接关系,主要集中看资产的过滤价格表现;它也不会显示交易量,其目的只是显示任何供需关系上的变化,称为「突破」(breakouts)。

    推荐制作的工具有:rpnf。

    弧线图

    1d8b0425223413e698491c6f322dbaae.png

    弧线图 (Arc Diagram) 是二维双轴图表以外另一种数据表达方式。在弧线图中,节点将沿着 X轴放置,然后再利用弧线表示节点与节点之间的连接关系。

    弧线图适合用来查找数据共同出现的情况。但缺点是:不能如其他双轴图表般清楚显示节点之间的结构和连接,而且过多连接也会使图表难于阅读。

    推荐的制作工具有:Protovis (编程语言)、D3 (编程语言)。

    折线图

    20197b160bcbebe7341333349c4879d8.png

    折线图用于在连续间隔或时间跨度上显示定量数值,最常用来显示趋势和关系。

    此外,折线图也能给出某时间段内的「整体概览」,看看数据在这段时间内的发展情况。

    推荐的制作工具有:MS Excel、Apple Numbers、D3、DataHero、Datamatic、Datawrapper、Envision.js、Google Charts、Google Docs、Infogr.am、OnlineChartTool.com、SlemmaVega。

    平行坐标图

    c33719e2857640dec6e78639a8484225.png

    平行坐标图 (Parallel Coordinates Plots) 能显示多变量的数值数据,最适合用来比较同一时间的多个变量,并展示它们之间的关系。

    当数据密集时,平行坐标图容易变得混乱、难以辨认。解决办法是通过互动技术,突出显示所选定的一条或多条线,同时淡化所有其他线条,让我们能更集中研究感兴趣的部分,并滤除干扰数据。

    推荐的制作工具有:D3、Protovis、RAWGraphs、The R Graph Gallery、Vega。

    网络图

    3387de514dc075d0725f017803f7f211.png

    也称为「网络地图」或「节点链路图」,用来显示事物之间的关系类型。

    这些节点通常是圆点或小圆圈,但也可以使用图标。

    网络图主要有分别为「不定向」和「定向」两种。不定向网络图仅显示实体之间的连接,而定向网络图则可显示连接是单向还是双向(通过小箭头)。

    网络图数据容量有限,并且当节点太多时会形成类似「毛球」的图案,使人难以阅读。

    推荐的制作工具有:Cytoscape、Datamatic、Gephi、Graph-tool、Mike Bostock's Block、Plot.ly、sigmajs、Vega、ZoomCharts。

    象形图

    080d5e64352fbb9f001581db6521d51f.png

    象形图 (Pictogram Chart) 也称为「象形统计图」,使用图案来显示数据量。

    使用图案能克服语言、文化和教育水平方面的差异,是更具代表性的数据显示方法。举个例子,如果数据是「5 辆车」,图中便会显示 5 个汽车图案。

    推荐的制作工具有:Infogr.am、jChart。

    直方图

    91e8041e4c52e5b27e7b7d6fc1fee967.png

    直方图适合用来显示在连续间隔或特定时间段内的数据分布,有助于估计数值集中位置、上下限值以及确定是否存在差距或异常值;也可粗略显示概率分布。

    推荐的制作工具有:MS Excel、Apple Numbers、D3、Datavisual、Google Docs、Infogr.am、OnlineChartTool.com、Protovis、R Graph Gallery、Slemma。

    密度图

    c5393a30efde34d2e05668e86f952ec5.png

    密度图 (Density Plot) 又称为「密度曲线图」,用于显示数据在连续时间段内的分布状况。

    这种图表是直方图的变种,使用平滑曲线来绘制数值水平,从而得出更平滑的分布,并且它们不受所使用分组数量的影响,所以能更好地界定分布形状 。

    推荐的制作工具有:The R Graph Gallery、Cookbook for R。

    人口金字塔

    8725b35dfbb2abf82f18158d24402552.png

    人口金字塔 (Population Pyramid) 也称为「年龄性别金字塔」,是彼此背靠背的一对直方图,显示所有年龄组和男女人口的分布情况。

    人口金字塔最适合用来检测人口模式的变化或差异。多个人口金字塔放在一起更可用于比较各国或不同群体之间的人口模式。

    推荐制作的工具有:AnyChart、D3 (重叠版本)、Vega、ZingChart。

    条形图

    aa17d750c1052ad2e0af071ac962e70f.png

    条形图 (Bar Chart) 也称为「棒形图」或「柱形图」,采用水平或垂直条形(柱形图)来比较不同类别的离散数值。


    图表其中一条轴代表要比较的具体类别,另一条则用作离散数值的标尺。

    条形图的离散数据是分类数据,针对的是单一类别中的数量多少,而不会显示数值在某时间段内的持续发展。

    推荐的制作工具有:MS Excel & Apple Numbers、AnyChart、D3 、DataHero、Datamatic、Datawrapper、Google Charts、Google Docs、Infogr.am、OnlineChartTool.com、Protovis、Slemma、Vega、ZoomCharts。

    多组条形图

    40742e7e118b68da55e5f75888ff61ef.png

    多组条形图也称为「分组条形图」或「复式条形图」,是条形图的变种。

    多组条形图通常用来将分组变量或类别与其他数据组进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。

    但缺点是,当有太多条形组合在一起时将难以阅读。

    推荐的制作工具有:D3、DataHero、Datavisual、Datawrapper、Infogr.am、NVD3.js、R Graph Gallery、Slemma、Vega、Visage、ZoomCharts。

    堆叠式条形图

    eef9a11a3b3974b1a6f7b690fd114cf4.png

    跟多组条形图不同,堆叠式条形图 (Stacked Bar Graph) 将多个数据集的条形彼此重迭显示,适合用来显示大型类别如何细分为较小的类别,以及每部分与总量有什么关系。

    堆叠式条形图共分成两种:

    • 简单堆叠式条形图。将分段数值一个接一个地放置,条形的总值就是所有段值加在一起,适合用来比较每个分组/分段的总量。

    • 100% 堆叠式条形图。会显示每组占总体的百分比,并按该组每个数值占整体的百分比来绘制,可用来显示每组中数量之间的相对差异。

    推荐的制作工具有:MS Excel、Apple Numbers、AnyChart、Datavisual、Datawrapper、Infogr.am、Slemma、ZingChart、ZoomCharts。

    不等宽柱状图

    dae881ef1d890654bae42f9fe5d59087.png

    不等宽柱状图 (Marimekko Chart)也称为「马赛克图」,用来显示分类数据中一对变量之间的关系,原理类似双向的 100% 堆叠式条形图,但其中所有条形在数值/标尺轴上具有相等长度,并会被划分成段。

    不等宽柱状图的主要缺点在于难以阅读,特别是当含有大量分段的时候。此外,我们也很难准确地对每个分段进行比较,因为它们并非沿着共同基线排列在一起。

    因此,不等宽柱状图较为适合提供数据概览。

    推荐的制作工具有:D3。

    面积图

    c300c07713880573d932ef7b78093af0.png

    面积图 (Area Graph) 是折线图的一种,但线下面的区域会由颜色或纹理填满。

    跟折线图一样,面积图可显示某时间段内量化数值的变化和发展,最常用来显示趋势,而非表示具体数值。

    两种较常用的面积图是分组式面积图和堆叠式面积图。分组式面积图在相同的零轴开始,而堆叠式面积图则从先前数据系列的最后数据点开始。

    推荐的制作工具有:MS Excel & Apple Numbers、D3、DataHero、Datamatic、Google Charts、Google Docs、Infogr.am、Protovis、Slemma、VegaOnlineChartTool.com。

    比例面积图

    68c7a17df7c17669f5e993ae78b50612.png

    非常适合用来比较数值和显示比例(尺寸、数量等),以便快速全面地了解数据的相对大小,而无需使用刻度。

    比例面积图通常使用正方形或圆形,常见技术错误是,使用长度来确定形状大小,而非计算形状中的空间面积,导致数值出现指数级的增长和减少。

    推荐的制作工具有:D3、Datamatic、Datavisual、Infogr.am

    堆叠式面积图

    be11bb6563467b994233302648d42c36.png

    堆叠式面积图 (Stacked Area Graph) 的原理与简单面积图相同,但它能同时显示多个数据系列,每一个系列的开始点是先前数据系列的结束点。

    堆叠式面积图使用区域面积来表示整数,因此不适用于负值。总的来说,它们适合用来比较同一间隔内多个变量的变化。

    推荐的制作工具有:MS Excel、Apple Numbers、DataHero、Datavisual、Google Docs、Infogr.am、OnlineChartTool、Slemma、Vega、ZingChart、ZoomCharts。

    量化波形图

    9ce71fa2cd21cd2a240a2d9ac0bf69bf.png

    这种图表是堆叠式面积图的一种变体,但其数值并非沿着固定直线轴来绘制,而是围绕着不断变化的中心基线。

    通过使用流动的有机形状,量化波形图 (Stream Graph) 可显示不同类别的数据随着时间的变化,这些有机形状有点像河流,因此量化波形图看起来相当美观。

    在量化波形图中,每个波浪的形状大小都与每个类别中的数值成比例。与波形图平行流动的轴用作时间刻度。我们也可以用不同颜色区分每个类别,或者通过改变色彩来显示每个类别的附加定量值。

    此外,当他们以互动形式展示时,比静态或印刷出来更有效率。

    推荐的制作工具有:Bob Rudis' GitHub、D3、infogr.am、JSFiddle、Lee Byron's GitHub、NVD3.js、plotDB、Protovis、RAWGraphs、Stream graph generator。

    雷达图

    23554615473af77defbf9e9155a686bb.png

    雷达图 (Radar Chart) 又称为「蜘蛛图」、「极地图」或「星图」,是用来比较多个定量变量的方法,可用于查看哪些变量具有相似数值,或者每个变量中有没有任何异常值。

    此外,雷达图也可用于查看数据集中哪些变量得分较高/低,是显示性能表现的理想之选。

    每个变量都具有自己的轴(从中心开始)。所有的轴都以径向排列,彼此之间的距离相等,所有轴都有相同的刻度。轴与轴之间的网格线通常只作指引用途。每个变量数值会画在其所属轴线之上,数据集内的所有变量将连在一起形成一个多边形。

    推荐的制作工具有:Amcharts、AnyChart、Google Docs、jChartFX、Online Chart Tool、ZingChart。

    桑基图

    d8b43461dea01833b875b489b56a4eb7.png

    桑基图 (Sankey Diagram) 用来显示流向和数量。

    在每个流程阶段中,流向箭头或线可以组合在一起,或者往不同路径各自分开。我们可用不同颜色来区分图表中的不同类别,或表示从一个阶段到另一个阶段的转换。

    推荐的制作工具有:RAWGraphs、Sankey Diagram Generator、Sankey Diagrams Blog Software List、Sankey Flow Show、SankeyMATIC、Tamc。

    平行集合图

    b8e7d6d900fee1dc7db641c88080ddd9.png

    平行集合图与桑基图类似,都显示流程和比例,但平行集合图不使用箭头,它们在每个所显示的线集 (line-set) 划分流程路径。

    每个线集对应于一个维度/数据集,其数值/类别由该线集内的不同线段所表示。每条线的宽度和流程路径,均由类别总数的比例份数所决定。每条流程路径都可以用不同颜色代表,以显示和比较不同类别之间的分布。

    推荐工具有:EagerEyes: ParallelSets、Jason Davies、Sankey Diagram Generator、SankeyMATIC。

    误差线

    6894686b4a2b5987f3ed1dc4bacaae71.png

    误差线可以作为一项增强功能来显示数据变化,通常用于显示范围数据集中的标准偏差、标准误差、置信区间或最小/最大值。

    误差线总是平行于定量标尺的轴线,可以是垂直或水平显示(取决于定量标尺是在 Y 轴还是 X 轴上)。

    推荐的工具有:AnyChart、Highcharts、plotly、Vega。

    树形结构图

    d211fc78f5926c8a38ee18491c59d4c8.png

    树状结构图 (Treemap) 是一种利用嵌套式矩形显示层次结构的方法,同时通过面积大小显示每个类别的数量。

    每个类别会获分配一个矩形区域,而其子类别则由嵌套在其中的小矩形代表。当不同数量被分配到各个类别时,这些矩形的面积大小会与此数量成正比显示。

    Ben Shneiderman 最初开发树状结构图用来在计算机上显示大量文件目录,而不会占用太多屏幕空间,因此树状结构图是一种紧凑而且节省空间的层次结构显示方式,可让人快速了解结构。

    推荐的制作工具有:AnyChart、D3、Datamatic、Google Charts、Google Docs、Infogr.am、jChartFX、RAWGraphs、Slemma、Vega、ZingChart。

    圆堆积图

    d7faa860ae2218fbe73af8b8f23a9308.png

    圆堆积 (Circle Packing) 也称为「圆形树结构图」,是树形结构图的变体,使用圆形(而非矩形)一层又一层地代表整个层次结构。

    每个圆形的面积也可用来表示额外任意数值,如数量或文件大小。我们也可用颜色将数据进行分类,或通过不同色调表示另一个变量。

    虽然圆堆积看起来漂亮,但不及树形结构图般节省空间(因为圆圈内会有很多空白处),可是它实际上比树形结构图更能有效显示层次结构。

    推荐的制作工具有:D3、D3 Zoomable、RAWGraphs。

    饼图

    5216426a51072cce366ac34cbea62691.png

    饼形图 (Pie Chart) 把一个圆圈划分成不同比例的分段,以展示各个类别之间的比例。

    饼形图适合用来快速展示数据比例分布,但主要缺点是:不能显示太多项目、通常需要图例说明、不能准确比较。

    制作工具有很多:D3、DataHero、Datamatic、Datavisual、Datawrapper、Google Charts、 Google Docs、Infogr.am、Protovis、OnlineChartTool.com、Slemma、ZingChart...

    圆环图

    762a39394eb6b3a08ee8c2a813683d29.png

    圆环图 (Donut Chart) 基本上就是饼形图,只是中间的部分被切掉。

    不过,圆环图还是比饼形图略有优势,它让人不再只看「饼」的面积,反面更重视总体数值的变化:专注于阅读弧线的长度,而不是比较「饼与饼」之间的比例不同。

    另外,圆环图中间的空白处更可以用来显示其他信息,因此更能节省空间。

    推荐的制作工具有:D3、DataHero、Datamatic、Datavisual、Datawrapper、Google Docs、Infogr.am、Protovis、Slemma、Visage、ZingChart、ZoomCharts。

    南丁格尔玫瑰图

    a09838b3d391c13776bd3b54d94fa38a.png

    南丁格尔玫瑰图 (Nightingale Rose Charts) 又称为「极面积图」。

    统计学家和医学改革家佛罗伦萨‧南丁格尔 (Florence Nightingale) 曾在克里米亚战争期间使用这种图表传达士兵身亡情况,故得名。

    在南丁格尔玫瑰图中,代表数值的是分段面积,而不是其半径。

    推荐的制作工具有:Datamatic、Infogr.am。

    旭日图

    535be058fdd21f221e90bed43aa521f2.png

    也称为「多层饼形图」或「径向树图」,通过一系列的圆环显示层次结构,再按不同类别节点进行切割。

    推荐的制作工具有:Aculocity、D3、JavaScript InfoVis Toolkit、MS Office、Protovis、RAWGraphs、

    螺旋图

    90dfa6a58c91dce6c489bc4bc819ee3d.png

    也称为「时间系列螺旋图」,沿阿基米德螺旋线 (Archimedean spiral) 画上基于时间的数据。

    图表从螺旋形的中心点开始往外发展。螺旋图十分多变,可使用条形、线条或数据点,沿着螺旋路径显示。

    螺旋图很适合用来显示大型数据集,通常显示长时间段内的数据趋势,因此能有效显示周期性的模式。

    推荐的制作工具有:Arpit Narechania's Block。

    径向条形图

    0d1c69efd89b5b0f23302a0dcc207d11.png

    径向条形图是在极坐标系上绘制的条形图。

    虽然看起来很美观,但径向条形图上条形的长度可能会被人误解。

    推荐制作工具有:AnyChart。

    径向柱图

    96c45de4ce03260daaf080a9477ea7bf.png

    也称为「圆形柱图」或「星图」。

    这种图表使用同心圆网格来绘制条形图。每个圆圈表示一个数值刻度,而径向分隔线则用作区分不同类别或间隔(如果是直方图)。

    条形通常从中心点开始向外延伸,但也可以别处为起点以显示数值范围(如跨度图)。此外,条形也可以如堆叠式条形图般堆叠起来。

    推荐的制作工具有:jChartFX、Bokeh。

    热图

    3ca64ead613924ddf7b4126da5bd859c.png

    热图 (Heatmap) 通过色彩变化来显示数据,当应用在表格时,热图适合用来交叉检查多变量的数据。

    热图适用于显示多个变量之间的差异;显示当中任何模式;显示是否有彼此相似的变量;以及检测彼此之间是否存在任何相关性。

    由于热图依赖颜色来表达数值,它比较适合用来显示广泛数值数据,因为要准确地指出色调之间的差异始终有难度,也较难从中提取特定数据点(除非在单元格中加入原始数据)。

    推荐的制作工具有:MS Excel、Apple Numbers、Amcharts、AnyChart、Highcharts、jChartFX、plot.ly、R Graph、Zing Chart。

    散点图

    cc3456c6b8322177177ba398559c7c66.png

    散点图 (Scatterplot) 也称为「点图」、「散布图」或「X-Y 点图」,用来显示两个变量的数值(每个轴上显示一个变量),并检测两个变量之间的关系或相关性是否存在。

    图表中可加入直线或曲线来辅助分析,并显示当所有数据点凝聚成单行时的模样,通常称为「最佳拟合线」或「趋势线」。

    如您有一对数值数据,可使用散点图来查看其中一个变量是否在影响着另一个变量。可是请记住,相关性并非因果关系,也有可能存在另一个变量在影响着结果。

    推荐的制作工具有:MS Excel、Apple Numbers、D3、DataHero、Datavisual、Google Charts、Google Docs、Infogr.am、OnlineChartTool.com、Vega、Visage、ZingChart。

    气泡图

    465e973dbdbc5968ad1c557f0643df27.png

    气泡图是一种包含多个变量的图表,结合了散点图和比例面积图,圆圈大小需要按照圆的面积来绘制,而非其半径或直径。

    通过利用定位和比例,气泡图通常用来比较和显示已标记/已分类的圆圈之间的关系。

    可是,过多气泡会使图表难以阅读,但我们可以在图表中加入交互性功能来解决这个问题(点击或把鼠标悬停在气泡上以显示隐藏信息),也可选择重组或筛选分组类别。

    推荐制作的工具有:AnyChart、Google Charts、Google Docs、Infogr.am、jChartFX、Online Chart Tool、RAWGraphs、Slemma、Visage、ZingChart

    气泡地形图

    7ff5b9944ed1f2f0c00b6fafb4318e84.png

    在这种数据地图中,指定地理区域上方会显示圆形图案,圆形面积与其在数据集中的数值会成正比。

    气泡地图适合用来比较不同地理区域之间的比例,而不会受区域面积的影响。但气泡地图的主要缺点在于:过大的气泡可能会与地图上其他气泡或区域出现重迭。

    推荐的制作工具有:AnyChart、CARTO、Datavisual、Khartis、Google docs、Polymaps、ZoomCharts。

    地区分布图

    d9aeb1ab2a3dd810527ecc6f86ef181b.png

    地区分布图通常用来显示不同区域与数据变量之间的关系,并把所显示位置的数值变化或模式进行可视化处理。

    我们在地图上每个区域以不同深浅度的颜色表示数据变量,例如从一种颜色渐变成另一种颜色、单色调渐进、从透明到不透明、从光到暗,甚至动用整个色谱。

    但缺点是无法准确读取或比较地图中的数值。此外,较大的地区会比较小区域更加显眼,影响读者对数值的感知。

    绘制地区分布图时的常见错误:对原始数据值(例如人口)进行运算,而不是使用归一化值(例:计算每平方公里的人口)。

    推荐的制作工具有:amMaps、D3、d3.geomap、Google Charts、Google Docs、DataHero、Datamatic、Datawrapper、Infogr.am、Kartograph、Polymaps、Slemma、Target Map.com、Vega。

    点示地图

    7cc1ac8dca307bc05015df8a303a0172.png

    点示地图 (Dot Map) 也称为「点示分布图」或「点示密度图」。在地理区域上放置相等大小的圆点,旨在检测该地域上的空间布局或数据分布。

    点示地图共有两种:一对一(每点代表单一计数或一件物件)和一对多(每点表示一个特定单位,例如 1 点 = 10棵树)。

    点示地图非常适合用来查看物件在某地域内的分布状况和模式,而且容易掌握,能提供数据概览。

    推荐的制作工具有:AnyChart、CARTO、Datavisual、Infogr.am、Khartis、mbostock's blocks、R Graph Gallery、ZoomCharts。

    连接地图

    49d9359401d4a28742af035b9e03f994.png

    连接地图 (Connection Map) 是用直线或曲线连接地图上不同地点的一种图表。

    连接地图非常适合用来显示地理连接和关系,也可以通过研究连接地图上的连接分布或集中程度来显示空间格局。

    推荐的制作工具是:AnyChart、ECharts、Javascript Maps、Curved、Straight、ZoomCharts。

    流向地图

    ba86ef3490afcf7756feb77141480b52.png

    流向地图 (Flow Map) 在地图上显示信息或物体从一个位置到另一个位置的移动及其数量,通常用来显示人物、动物和产品的迁移数据。

    单一流向线所代表的移动规模或数量由其粗幼度表示,有助显示迁移活动的地理分布。

    推荐的制作工具有:AnyChart。

    甘特图

    b9ec6f9ac953ce881b3fa12cf7968e9f.png

    甘特图 (Gantt Chart) 通常用作项目管理的组织工具,显示活动(或任务)列表和持续时间,也显示每项活动何时开始和结束。

    甘特图适合用来规划和估计整个项目的所需时间,也可显示相互重迭的活动。

    推荐的制作工具有:AnyChart、Amcharts、DHTMLX、GanttPro、Google Charts、Redbooth、RAWGraphs、Smartsheet。

    箱形图

    b344e6f3c36948df3cedf7899b97e750.png

    箱形图又称为「盒须图」或「箱线图」,能方便显示数字数据组的四分位数,可以垂直或水平的形式出现。

    从盒子两端延伸出来的线条称为「晶须」(whiskers),用来表示上、下四分位数以外的变量。异常值 (Outliers) 有时会以与晶须处于同一水平的单一数据点表示。

    箱形图通常用于描述性统计,是以图形方式快速查看一个或多个数据集的好方法。

    推荐的制作工具有:AnyChart、D3、Protovis、R AWGraphs、R Graph Gallery、ZingChart。

    子弹图

    5212f61d51dbfb68de1a4dc95efb305b.png

    子弹图 (Bullet Graph) 的功能类似于条形图,但加入更多视像元素,提供更多补充信息。

    子弹图最初由 Stephen Few 开发,用来取代仪表盘上如里程表或时速表这类图形仪表,解决显示信息不足的问题,而且能有效节省空间,更可除掉仪表盘上一些不必要的东西。

    推荐的制作工具有:am chartsAnyChart、D3、DimpleJS、IgniteUI、jChartFX 、moderndata.plot.ly、NVD3.js、Protovis。

    蜡烛图

    674324ca1435245fa0ebdb8b31a8b716.png

    又名「日本K线图」,通常用来显示和分析证券、衍生工具、外汇货币、股票、债券等商品随着时间的价格变动。

    蜡烛图通过使用烛台式的符号来显示多种价格信息,例如开盘价、收盘价、最高价和最低价,每个代表单一时间段(每分钟、每小时、每天或每月)的交易活动。每个烛台符号沿着 X 轴上的时间刻度绘制,显示随着时间推移的交易活动。

    但是,蜡烛图只能显示开盘价和收盘价之间的关系,而非两者之间所发生的事件,因此也无法用来解释交易波动的缘由。

    推荐的制作工具有:Aaron Beppu's Block、amcharts、AnyChart、CanvasJS、ECharts、Google Chart、Google Docs、infogr.am、plotly、Protovis、ZingChart、ZoomCharts

    跨度图

    27884cb91ae2e86aa61d4979f0834d44.png

    也称为「范围条形/柱形图」或「浮动条形图」,用来显示数据集内最小值和最大值之间的范围,适合用来比较范围,尤其是已分类的范围。

    跨度图只集中显示极端数值,不提供任何关于最小值和最大值之间的数值、整体平均值或数据分布等其他信息。

    推荐制作工具有:AnyChart、D3, Arpit Narechania's Block、ZingChart。

    卡吉图

    d736d0bf363c481c6907da5753649ec0.png

    卡吉图 (Kagi Chart)能通过一系列线段显示价格表现,进而显示特定资产的一般供需水平。由于与时间无直接关系,它能更清晰地显示重要的价格走势。

    推荐的制作工具有:D3、Arpit Narechania's Block、FusionCharts、Ragu Ramaswamy's Block、Wolfram Mathematica、

    美国线

    85314edc0e2dc48fa0febdb4a1e77455.png

    美国线 (Open-high-low-close Charts) 也称为「OHLC 图」或「价格图」,通常用作交易工具,显示和分析证券、货币、股票、债券等商品随时间的价格变动。

    推荐的制作工具有:Amcharts、AnyChart、ByteMuse.com、CanvasJS、jChartFX、Plotly、vaadin、Zing Chart。

    弦图

    ca247238653fcc49a01074b30d68b2bf.png

    弦图 (Chord Diagram) 可以显示不同实体之间的相互关系和彼此共享的一些共通之处,因此这种图表非常适合用来比较数据集或不同数据组之间的相似性。

    节点围绕着圆周分布,点与点之间以弧线或贝塞尔曲线彼此连接以显示当中关系,然后通过每个圆弧的大小比例再给每个连接分配数值。此外,也可以用颜色将数据分成不同类别,有助于进行比较和区分。

    推荐的制作工具有:Circos、D3、R Graph Gallery、ZingChart。

    非彩带弦图

    bee34ec247c845627e6456c81ee4486a.png

    非彩带弦图 (Non-ribbon Chord Diagram) 是弦图的一个精简版本,仅显示节点和连接线,更加强调数据之间的连接关系。

    推荐的制作工具有:Circos。

    树形图

    cd4f13efd0e63bd63070494002cc8023.png

    树形图 (Tree Diagram) 也称为「组织图」或「链路图」,是通过树状结构表示层次结构的一种方式。

    其结构通常由没有上级/父级成员的元素开始(根节点),然后加入节点,再用线连在一起,称为分支,表示成员之间的关系和连接。最后是枝叶节点(或称为末端节点),是没有子节点的成员。

    树形图通常用于表示家庭关系和血统、分类学、进化科学、计算机科学与数学等,也是企业和组织的管理工具。

    推荐的工具有:Datamatic、Google Charts、Google Docs、giffy、Zoomcharts。

    流程图

    50af962e35bcf704fb06656d9f0f0c72.png

    流程图 (Flow Chart) 使用一系列相互连接的符号绘制出整个过程,从而解释复杂和/或抽象的过程、系统、概念或算法的运作模式。

    不同符号代表不同意思,每种都具有各自的特定形状。流程图以弧形矩形表示流程的开始和结束;线段或箭头用于显示从一个步骤到另一个步骤的方向或流程;简单的指令或动作用矩形来表示,而当需要作出决定时,则使用钻石形状...

    推荐的制作工具有:asciiflow、Creately、draw.io、gliffy、GoJS、Google Drawings、LucidChart、MS Visio。

    脑力激荡图图

    444162f619511b0db5e5858965f983e1.png

    脑力激荡图也称为「心智图」,可以将相关想法、单词、图像和概念联合在一起。

    脑力激荡图经常在项目初期使用,用来产生想法、查找关联、分类想法、组织信息、显示结构和一般学习。

    推荐的制作工具有:Coggle、MindMup

    记数符号图表

    9f79489fcc08ed8ab5f0a2231ff2783a.png

    记数符号图表 (Tally Chart) 既是记录工具,也可通过使用标记数字系统来显示数据分布频率。

    在绘制记数符号图表时,将类别、数值或间隔放置在同一个轴或列(通常为 Y 轴或左侧第一列)上。每当出现数值时,在相应的列或行中添加记数符号。

    完成收集所有数据后,把所有标记加起来并把总数写在下一列或下一行中,最终结果类似于直方图。

    推荐的制作工具有:纸和笔。

    日历图

    b40d2d5e42c4ba78cbc3e02958d3f310.png

    人类曾开发出各种日历系统作为组织工具,帮助我们提前做好计划。我们也把日历当作可视化工具,适用于显示不同时间段的活动事件的组织情况。

    今天我们最常用的日历形式是公历,每个月份的月历由七个垂直列组成(代表每周七天),另有约五至六行以水平方式代表星期。

    可是,日历格式并没有严格规定,所以市面上有各式各样不同的设计,只要能以时间顺序显示日期或时间单位便可。

    推荐的制作工具有:TimeandDate.com、Calendar Creator、ZingChart

    时间线

    94633a37627371fda383a08870a8dd4a.png

    时间线 (Timeline) 是以时间顺序显示一系列事件的图象化方式,主要功能是传达时间相关信息,用于分析或呈现历史故事。

    如果是按比例绘制的时间线,我们可以通过查看不同事件之间的时间间隔,了解事件发生的时间或即将在何时发生,从中查找时间段内的事件是否遵循任何模式,或者事件在该时间段内如何分布。

    有时时间线会与图表相互结合,显示定量数据随时间的变化。

    推荐的制作工具有:Google Charts、Timeline.js、Tiki-Toki、Vega。

    时间表

    ee8e6a415bcb6e7bebae22e66fdc8c55.png

    时间表 (Timetable) 可用作预定事件、任务和行动的引用和管理工具。

    使用表格按时间顺序和/或字母顺序组织数据,能有助用户快速进行引用。

    象形图

    e049354d032ec604f33096ef8d82caec.png

    说明图旨在使用笔记、标签和图例来解释说明所显示的图像,以便解释概念或方法、描述物件或场所、显示事情的运作变化或帮助了解所显示的主题。

    所使用的图像可以是象征性、图像化或真实相片。

    茎叶图

    03a99e8589f6accebf12450c306baa0c.png

    茎叶图 (Stem & Leaf Plots) 又称为「枝叶图」,是一种按位数 (place value)组织数据的方法,可用来显示数据分布。

    不变的位数由小至大、由上至下显示在中间的「茎」(通常是以十为单位),每个位数之内的数据则会成为「叶」并横向延伸。

    除了向读者快速提供数据分布信息之外,茎叶图也可用于突出异常值和查找模式。如果您有两个数据集,则可使用背对背或双重茎叶图来比较两者。

    推荐的制作工具有:CalculatorSoup、Easycalculation.com、Protovis。

    文氏图

    335bf66f50d01b9afd0195ded77eb752.png

    文氏图 (Venn Diagram) 也称为「集合图」,显示集与集之间所有可能存在的逻辑关系,每个集通常以一个圆圈表示。

    每个集都是一组具有共同之处的物件或数据,当多个圆圈(集)相互重迭时,称为交集 (intersection),里面的数据同时具有重迭集中的所有属性。

    推荐工具有:Datamatic、gliffy、R Graph Gallery、ZingChart。

    小提琴图

    8a230aae186881ff25441e65b31c4a6c.png

    小提琴图 (Violin Plot) 结合了箱形图和密度图的特征,主要用来显示数据的分布形状。

    中间的黑色粗条表示四分位数范围,从其延伸的幼细黑线代表 95% 置信区间,而白点则为中位数。

    推荐的制作工具有:The R Graph Gallery、seaborn、z-m-k's Blocks。

    字云图

    9a74a034c1c56ee4b5a8709a0db37905.png

    字云图 (Word Cloud) 也称为「标签云图」、「词云」等,每个此的大小与其出现频率成正比,以此显示不同单词在给定文本中的出现频率,然后将所有的字词排在一起,形成云状图案。

    在字云图上使用颜色通常都是毫无意义的,主要是为了美观,但我们可以用颜色对单词进行分类。

    推荐的制作工具有:D3、Datamatic、Infogr.am、R Graph Gallery、Vega、Visage、Wordclouds.com、Wordle、ZingChart。

    展开全文
  • 数据可视化的爱好者Severino Ribecca,他在自己的网站上收录了 60 种可视化图表样式以及它们分别适用于什么样的场景,并且推荐了相应的制作工具。值得一看。点阵点阵图表 (Dot Matrix Chart) 以点为单位显...

    来源:数据分析1480

    全文共 9459 个字,建议阅读 15 分钟

    可视化图表种类如此之多,什么场景下应该用什么图表展示,是一个让人头秃的难题。

    数据可视化的爱好者Severino Ribecca,他在自己的网站上收录了 60 种可视化图表样式以及它们分别适用于什么样的场景,并且推荐了相应的制作工具。

    值得一看。

    点阵图

    4e0e621ea7df98d389b5bfa53aaab211.png

    点阵图表 (Dot Matrix Chart) 以点为单位显示离散数据,每种颜色的点表示一个特定类别,并以矩阵形式组合在一起。

    适合用来快速检视数据集中不同类别的分布和比例,并与其他数据集的分布和比例进行比较,让人更容易找出当中模式。

    点数图

    8261ede1f6f50e1c9b346a991747a820.png

    点数图 (Point & Figure Charts)也称为「P&F 图」,使用由 X 和 O 符号组成的一系列方格来显示特定资产的供需关系。

    这种图表与时间无直接关系,主要集中看资产的过滤价格表现;它也不会显示交易量,其目的只是显示任何供需关系上的变化,称为「突破」(breakouts)。

    推荐制作的工具有:rpnf。

    弧线图

    7a56272f7c4641df8c9f09d4e323237c.png

    弧线图 (Arc Diagram) 是二维双轴图表以外另一种数据表达方式。在弧线图中,节点将沿着 X轴放置,然后再利用弧线表示节点与节点之间的连接关系。

    弧线图适合用来查找数据共同出现的情况。但缺点是:不能如其他双轴图表般清楚显示节点之间的结构和连接,而且过多连接也会使图表难于阅读。

    推荐的制作工具有:Protovis (编程语言)、D3 (编程语言)。

    折线图

    33df373cac82273ae6721e15e55a7373.png

    折线图用于在连续间隔或时间跨度上显示定量数值,最常用来显示趋势和关系。

    此外,折线图也能给出某时间段内的「整体概览」,看看数据在这段时间内的发展情况。

    推荐的制作工具有:MS Excel、Apple Numbers、D3、DataHero、Datamatic、Datawrapper、Envision.js、Google Charts、Google Docs、Infogr.am、OnlineChartTool.com、SlemmaVega。

    平行坐标图

    b078b0a351b302e93efdbed1da17a60e.png

    平行坐标图 (Parallel Coordinates Plots) 能显示多变量的数值数据,最适合用来比较同一时间的多个变量,并展示它们之间的关系。

    当数据密集时,平行坐标图容易变得混乱、难以辨认。解决办法是通过互动技术,突出显示所选定的一条或多条线,同时淡化所有其他线条,让我们能更集中研究感兴趣的部分,并滤除干扰数据。

    推荐的制作工具有:D3、Protovis、RAWGraphs、The R Graph Gallery、Vega。

    网络图

    ca48b2f7ccd4ab151728fbc51ce26ee5.png

    也称为「网络地图」或「节点链路图」,用来显示事物之间的关系类型。

    这些节点通常是圆点或小圆圈,但也可以使用图标。

    网络图主要有分别为「不定向」和「定向」两种。不定向网络图仅显示实体之间的连接,而定向网络图则可显示连接是单向还是双向(通过小箭头)。

    网络图数据容量有限,并且当节点太多时会形成类似「毛球」的图案,使人难以阅读。

    推荐的制作工具有:Cytoscape、Datamatic、Gephi、Graph-tool、Mike Bostock's Block、Plot.ly、sigmajs、Vega、ZoomCharts。

    象形图

    c6a5afe4adb2235172335cd5bacc5b13.png

    象形图 (Pictogram Chart) 也称为「象形统计图」,使用图案来显示数据量。

    使用图案能克服语言、文化和教育水平方面的差异,是更具代表性的数据显示方法。举个例子,如果数据是「5 辆车」,图中便会显示 5 个汽车图案。

    推荐的制作工具有:Infogr.am、jChart。

    直方图

    3e7635431d85b332c1baab0df5ab4a90.png

    直方图适合用来显示在连续间隔或特定时间段内的数据分布,有助于估计数值集中位置、上下限值以及确定是否存在差距或异常值;也可粗略显示概率分布。

    推荐的制作工具有:MS Excel、Apple Numbers、D3、Datavisual、Google Docs、Infogr.am、OnlineChartTool.com、Protovis、R Graph Gallery、Slemma。

    密度图

    179a90acaea5294b082d5c1778cb5d25.png

    密度图 (Density Plot) 又称为「密度曲线图」,用于显示数据在连续时间段内的分布状况。

    这种图表是直方图的变种,使用平滑曲线来绘制数值水平,从而得出更平滑的分布,并且它们不受所使用分组数量的影响,所以能更好地界定分布形状 。

    推荐的制作工具有:The R Graph Gallery、Cookbook for R。

    人口金字塔

    40126aef7a7f6b4d69e8f4e2c3d5d148.png

    人口金字塔 (Population Pyramid) 也称为「年龄性别金字塔」,是彼此背靠背的一对直方图,显示所有年龄组和男女人口的分布情况。

    人口金字塔最适合用来检测人口模式的变化或差异。多个人口金字塔放在一起更可用于比较各国或不同群体之间的人口模式。

    推荐制作的工具有:AnyChart、D3 (重叠版本)、Vega、ZingChart。

    条形图

    0fea9ceb95792a6569a4e59c6d4d3f2d.png

    条形图 (Bar Chart) 也称为「棒形图」或「柱形图」,采用水平或垂直条形(柱形图)来比较不同类别的离散数值。


    图表其中一条轴代表要比较的具体类别,另一条则用作离散数值的标尺。

    条形图的离散数据是分类数据,针对的是单一类别中的数量多少,而不会显示数值在某时间段内的持续发展。

    推荐的制作工具有:MS Excel & Apple Numbers、AnyChart、D3 、DataHero、Datamatic、Datawrapper、Google Charts、Google Docs、Infogr.am、OnlineChartTool.com、Protovis、Slemma、Vega、ZoomCharts。

    多组条形图

    2a36f1df6c702c71e666abef7c2af3d8.png

    多组条形图也称为「分组条形图」或「复式条形图」,是条形图的变种。

    多组条形图通常用来将分组变量或类别与其他数据组进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。

    但缺点是,当有太多条形组合在一起时将难以阅读。

    推荐的制作工具有:D3、DataHero、Datavisual、Datawrapper、Infogr.am、NVD3.js、R Graph Gallery、Slemma、Vega、Visage、ZoomCharts。

    堆叠式条形图

    7cef5787096ab986b29e21bb6c7d9df3.png

    跟多组条形图不同,堆叠式条形图 (Stacked Bar Graph) 将多个数据集的条形彼此重迭显示,适合用来显示大型类别如何细分为较小的类别,以及每部分与总量有什么关系。

    堆叠式条形图共分成两种:

    • 简单堆叠式条形图。将分段数值一个接一个地放置,条形的总值就是所有段值加在一起,适合用来比较每个分组/分段的总量。

    • 100% 堆叠式条形图。会显示每组占总体的百分比,并按该组每个数值占整体的百分比来绘制,可用来显示每组中数量之间的相对差异。

    推荐的制作工具有:MS Excel、Apple Numbers、AnyChart、Datavisual、Datawrapper、Infogr.am、Slemma、ZingChart、ZoomCharts。

    不等宽柱状图

    2a6f5c68428857166de95a1936710589.png

    不等宽柱状图 (Marimekko Chart)也称为「马赛克图」,用来显示分类数据中一对变量之间的关系,原理类似双向的 100% 堆叠式条形图,但其中所有条形在数值/标尺轴上具有相等长度,并会被划分成段。

    不等宽柱状图的主要缺点在于难以阅读,特别是当含有大量分段的时候。此外,我们也很难准确地对每个分段进行比较,因为它们并非沿着共同基线排列在一起。

    因此,不等宽柱状图较为适合提供数据概览。

    推荐的制作工具有:D3。

    面积图

    c19c11be960ec211ca5b4e3c6f2c3762.png

    面积图 (Area Graph) 是折线图的一种,但线下面的区域会由颜色或纹理填满。

    跟折线图一样,面积图可显示某时间段内量化数值的变化和发展,最常用来显示趋势,而非表示具体数值。

    两种较常用的面积图是分组式面积图和堆叠式面积图。分组式面积图在相同的零轴开始,而堆叠式面积图则从先前数据系列的最后数据点开始。

    推荐的制作工具有:MS Excel & Apple Numbers、D3、DataHero、Datamatic、Google Charts、Google Docs、Infogr.am、Protovis、Slemma、VegaOnlineChartTool.com。

    比例面积图

    b6220b727ae8f8c0d982c97f7aeedcb1.png

    非常适合用来比较数值和显示比例(尺寸、数量等),以便快速全面地了解数据的相对大小,而无需使用刻度。

    比例面积图通常使用正方形或圆形,常见技术错误是,使用长度来确定形状大小,而非计算形状中的空间面积,导致数值出现指数级的增长和减少。

    推荐的制作工具有:D3、Datamatic、Datavisual、Infogr.am

    堆叠式面积图

    d8d4d1693ce98fd857e544910b1e0c47.png

    堆叠式面积图 (Stacked Area Graph) 的原理与简单面积图相同,但它能同时显示多个数据系列,每一个系列的开始点是先前数据系列的结束点。

    堆叠式面积图使用区域面积来表示整数,因此不适用于负值。总的来说,它们适合用来比较同一间隔内多个变量的变化。

    推荐的制作工具有:MS Excel、Apple Numbers、DataHero、Datavisual、Google Docs、Infogr.am、OnlineChartTool、Slemma、Vega、ZingChart、ZoomCharts。

    量化波形图

    631a81b682c0eb559c364b81f5878fa7.png

    这种图表是堆叠式面积图的一种变体,但其数值并非沿着固定直线轴来绘制,而是围绕着不断变化的中心基线。

    通过使用流动的有机形状,量化波形图 (Stream Graph) 可显示不同类别的数据随着时间的变化,这些有机形状有点像河流,因此量化波形图看起来相当美观。

    在量化波形图中,每个波浪的形状大小都与每个类别中的数值成比例。与波形图平行流动的轴用作时间刻度。我们也可以用不同颜色区分每个类别,或者通过改变色彩来显示每个类别的附加定量值。

    此外,当他们以互动形式展示时,比静态或印刷出来更有效率。

    推荐的制作工具有:Bob Rudis' GitHub、D3、infogr.am、JSFiddle、Lee Byron's GitHub、NVD3.js、plotDB、Protovis、RAWGraphs、Stream graph generator。

    雷达图

    a9d205c1375f8a55a7bb10f92842f36a.png

    雷达图 (Radar Chart) 又称为「蜘蛛图」、「极地图」或「星图」,是用来比较多个定量变量的方法,可用于查看哪些变量具有相似数值,或者每个变量中有没有任何异常值。

    此外,雷达图也可用于查看数据集中哪些变量得分较高/低,是显示性能表现的理想之选。

    每个变量都具有自己的轴(从中心开始)。所有的轴都以径向排列,彼此之间的距离相等,所有轴都有相同的刻度。轴与轴之间的网格线通常只作指引用途。每个变量数值会画在其所属轴线之上,数据集内的所有变量将连在一起形成一个多边形。

    推荐的制作工具有:Amcharts、AnyChart、Google Docs、jChartFX、Online Chart Tool、ZingChart。

    桑基图

    69d51c93c74d1edfee29bed14032ded9.png

    桑基图 (Sankey Diagram) 用来显示流向和数量。

    在每个流程阶段中,流向箭头或线可以组合在一起,或者往不同路径各自分开。我们可用不同颜色来区分图表中的不同类别,或表示从一个阶段到另一个阶段的转换。

    推荐的制作工具有:RAWGraphs、Sankey Diagram Generator、Sankey Diagrams Blog Software List、Sankey Flow Show、SankeyMATIC、Tamc。

    平行集合图

    863ee0f935b6819047de68558d8da07a.png

    平行集合图与桑基图类似,都显示流程和比例,但平行集合图不使用箭头,它们在每个所显示的线集 (line-set) 划分流程路径。

    每个线集对应于一个维度/数据集,其数值/类别由该线集内的不同线段所表示。每条线的宽度和流程路径,均由类别总数的比例份数所决定。每条流程路径都可以用不同颜色代表,以显示和比较不同类别之间的分布。

    推荐工具有:EagerEyes: ParallelSets、Jason Davies、Sankey Diagram Generator、SankeyMATIC。

    误差线

    821dd7d35e16dbf00e04488e67ecd708.png

    误差线可以作为一项增强功能来显示数据变化,通常用于显示范围数据集中的标准偏差、标准误差、置信区间或最小/最大值。

    误差线总是平行于定量标尺的轴线,可以是垂直或水平显示(取决于定量标尺是在 Y 轴还是 X 轴上)。

    推荐的工具有:AnyChart、Highcharts、plotly、Vega。

    树形结构图

    c20dfebb470860aa51bbf445d66d7344.png

    树状结构图 (Treemap) 是一种利用嵌套式矩形显示层次结构的方法,同时通过面积大小显示每个类别的数量。

    每个类别会获分配一个矩形区域,而其子类别则由嵌套在其中的小矩形代表。当不同数量被分配到各个类别时,这些矩形的面积大小会与此数量成正比显示。

    Ben Shneiderman 最初开发树状结构图用来在计算机上显示大量文件目录,而不会占用太多屏幕空间,因此树状结构图是一种紧凑而且节省空间的层次结构显示方式,可让人快速了解结构。

    推荐的制作工具有:AnyChart、D3、Datamatic、Google Charts、Google Docs、Infogr.am、jChartFX、RAWGraphs、Slemma、Vega、ZingChart。

    圆堆积图

    5852db9d4e7d44c78567118acc643316.png

    圆堆积 (Circle Packing) 也称为「圆形树结构图」,是树形结构图的变体,使用圆形(而非矩形)一层又一层地代表整个层次结构。

    每个圆形的面积也可用来表示额外任意数值,如数量或文件大小。我们也可用颜色将数据进行分类,或通过不同色调表示另一个变量。

    虽然圆堆积看起来漂亮,但不及树形结构图般节省空间(因为圆圈内会有很多空白处),可是它实际上比树形结构图更能有效显示层次结构。

    推荐的制作工具有:D3、D3 Zoomable、RAWGraphs。

    饼图

    14ac45a8c838f8b078bc9755a1c3f5b8.png

    饼形图 (Pie Chart) 把一个圆圈划分成不同比例的分段,以展示各个类别之间的比例。

    饼形图适合用来快速展示数据比例分布,但主要缺点是:不能显示太多项目、通常需要图例说明、不能准确比较。

    制作工具有很多:D3、DataHero、Datamatic、Datavisual、Datawrapper、Google Charts、 Google Docs、Infogr.am、Protovis、OnlineChartTool.com、Slemma、ZingChart...

    圆环图

    bfa027a18a5d503323e5be49e52c0546.png

    圆环图 (Donut Chart) 基本上就是饼形图,只是中间的部分被切掉。

    不过,圆环图还是比饼形图略有优势,它让人不再只看「饼」的面积,反面更重视总体数值的变化:专注于阅读弧线的长度,而不是比较「饼与饼」之间的比例不同。

    另外,圆环图中间的空白处更可以用来显示其他信息,因此更能节省空间。

    推荐的制作工具有:D3、DataHero、Datamatic、Datavisual、Datawrapper、Google Docs、Infogr.am、Protovis、Slemma、Visage、ZingChart、ZoomCharts。

    南丁格尔玫瑰图

    2e0ad84ccbc766e60208aac208b27062.png

    南丁格尔玫瑰图 (Nightingale Rose Charts) 又称为「极面积图」。

    统计学家和医学改革家佛罗伦萨‧南丁格尔 (Florence Nightingale) 曾在克里米亚战争期间使用这种图表传达士兵身亡情况,故得名。

    在南丁格尔玫瑰图中,代表数值的是分段面积,而不是其半径。

    推荐的制作工具有:Datamatic、Infogr.am。

    旭日图

    75b8480893936b7a4d42445722dbd2e9.png

    也称为「多层饼形图」或「径向树图」,通过一系列的圆环显示层次结构,再按不同类别节点进行切割。

    推荐的制作工具有:Aculocity、D3、JavaScript InfoVis Toolkit、MS Office、Protovis、RAWGraphs、

    螺旋图

    166c0009049079e0d5ceb07eeda20700.png

    也称为「时间系列螺旋图」,沿阿基米德螺旋线 (Archimedean spiral) 画上基于时间的数据。

    图表从螺旋形的中心点开始往外发展。螺旋图十分多变,可使用条形、线条或数据点,沿着螺旋路径显示。

    螺旋图很适合用来显示大型数据集,通常显示长时间段内的数据趋势,因此能有效显示周期性的模式。

    推荐的制作工具有:Arpit Narechania's Block。

    径向条形图

    1ff1108374fc8a8946136c71eafa2ce4.png

    径向条形图是在极坐标系上绘制的条形图。

    虽然看起来很美观,但径向条形图上条形的长度可能会被人误解。

    推荐制作工具有:AnyChart。

    径向柱图

    609c4c77992d29c17229c55537314806.png

    也称为「圆形柱图」或「星图」。

    这种图表使用同心圆网格来绘制条形图。每个圆圈表示一个数值刻度,而径向分隔线则用作区分不同类别或间隔(如果是直方图)。

    条形通常从中心点开始向外延伸,但也可以别处为起点以显示数值范围(如跨度图)。此外,条形也可以如堆叠式条形图般堆叠起来。

    推荐的制作工具有:jChartFX、Bokeh。

    热图

    bb48f9a5b39fb181015714008528fc53.png

    热图 (Heatmap) 通过色彩变化来显示数据,当应用在表格时,热图适合用来交叉检查多变量的数据。

    热图适用于显示多个变量之间的差异;显示当中任何模式;显示是否有彼此相似的变量;以及检测彼此之间是否存在任何相关性。

    由于热图依赖颜色来表达数值,它比较适合用来显示广泛数值数据,因为要准确地指出色调之间的差异始终有难度,也较难从中提取特定数据点(除非在单元格中加入原始数据)。

    推荐的制作工具有:MS Excel、Apple Numbers、Amcharts、AnyChart、Highcharts、jChartFX、plot.ly、R Graph、Zing Chart。

    散点图

    210fa8b8c41d5a404e0ffa6f3e1248a1.png

    散点图 (Scatterplot) 也称为「点图」、「散布图」或「X-Y 点图」,用来显示两个变量的数值(每个轴上显示一个变量),并检测两个变量之间的关系或相关性是否存在。

    图表中可加入直线或曲线来辅助分析,并显示当所有数据点凝聚成单行时的模样,通常称为「最佳拟合线」或「趋势线」。

    如您有一对数值数据,可使用散点图来查看其中一个变量是否在影响着另一个变量。可是请记住,相关性并非因果关系,也有可能存在另一个变量在影响着结果。

    推荐的制作工具有:MS Excel、Apple Numbers、D3、DataHero、Datavisual、Google Charts、Google Docs、Infogr.am、OnlineChartTool.com、Vega、Visage、ZingChart。

    气泡图

    84f2b6840e8018ff98a67e56f41ec23f.png

    气泡图是一种包含多个变量的图表,结合了散点图和比例面积图,圆圈大小需要按照圆的面积来绘制,而非其半径或直径。

    通过利用定位和比例,气泡图通常用来比较和显示已标记/已分类的圆圈之间的关系。

    可是,过多气泡会使图表难以阅读,但我们可以在图表中加入交互性功能来解决这个问题(点击或把鼠标悬停在气泡上以显示隐藏信息),也可选择重组或筛选分组类别。

    推荐制作的工具有:AnyChart、Google Charts、Google Docs、Infogr.am、jChartFX、Online Chart Tool、RAWGraphs、Slemma、Visage、ZingChart

    气泡地形图

    8c39ddbf735ae384c122879ed5a3c11f.png

    在这种数据地图中,指定地理区域上方会显示圆形图案,圆形面积与其在数据集中的数值会成正比。

    气泡地图适合用来比较不同地理区域之间的比例,而不会受区域面积的影响。但气泡地图的主要缺点在于:过大的气泡可能会与地图上其他气泡或区域出现重迭。

    推荐的制作工具有:AnyChart、CARTO、Datavisual、Khartis、Google docs、Polymaps、ZoomCharts。

    地区分布图

    481b1a3f5d08cbd30aec9b16f0b827f8.png

    地区分布图通常用来显示不同区域与数据变量之间的关系,并把所显示位置的数值变化或模式进行可视化处理。

    我们在地图上每个区域以不同深浅度的颜色表示数据变量,例如从一种颜色渐变成另一种颜色、单色调渐进、从透明到不透明、从光到暗,甚至动用整个色谱。

    但缺点是无法准确读取或比较地图中的数值。此外,较大的地区会比较小区域更加显眼,影响读者对数值的感知。

    绘制地区分布图时的常见错误:对原始数据值(例如人口)进行运算,而不是使用归一化值(例:计算每平方公里的人口)。

    推荐的制作工具有:amMaps、D3、d3.geomap、Google Charts、Google Docs、DataHero、Datamatic、Datawrapper、Infogr.am、Kartograph、Polymaps、Slemma、Target Map.com、Vega。

    点示地图

    1f3a7d87696a6ce60a879f66b3377512.png

    点示地图 (Dot Map) 也称为「点示分布图」或「点示密度图」。在地理区域上放置相等大小的圆点,旨在检测该地域上的空间布局或数据分布。

    点示地图共有两种:一对一(每点代表单一计数或一件物件)和一对多(每点表示一个特定单位,例如 1 点 = 10棵树)。

    点示地图非常适合用来查看物件在某地域内的分布状况和模式,而且容易掌握,能提供数据概览。

    推荐的制作工具有:AnyChart、CARTO、Datavisual、Infogr.am、Khartis、mbostock's blocks、R Graph Gallery、ZoomCharts。

    连接地图

    b18580d71b81245e2c66f10d2e119a75.png

    连接地图 (Connection Map) 是用直线或曲线连接地图上不同地点的一种图表。

    连接地图非常适合用来显示地理连接和关系,也可以通过研究连接地图上的连接分布或集中程度来显示空间格局。

    推荐的制作工具是:AnyChart、ECharts、Javascript Maps、Curved、Straight、ZoomCharts。

    流向地图

    7d24e81b2ac8a10743226db1a1bccbfb.png

    流向地图 (Flow Map) 在地图上显示信息或物体从一个位置到另一个位置的移动及其数量,通常用来显示人物、动物和产品的迁移数据。

    单一流向线所代表的移动规模或数量由其粗幼度表示,有助显示迁移活动的地理分布。

    推荐的制作工具有:AnyChart。

    甘特图

    b61f7a2c1d5b60be2735ad22bc0fa36e.png

    甘特图 (Gantt Chart) 通常用作项目管理的组织工具,显示活动(或任务)列表和持续时间,也显示每项活动何时开始和结束。

    甘特图适合用来规划和估计整个项目的所需时间,也可显示相互重迭的活动。

    推荐的制作工具有:AnyChart、Amcharts、DHTMLX、GanttPro、Google Charts、Redbooth、RAWGraphs、Smartsheet。

    箱形图

    aaf0ca99f2a4147315a722d97fc7880f.png

    箱形图又称为「盒须图」或「箱线图」,能方便显示数字数据组的四分位数,可以垂直或水平的形式出现。

    从盒子两端延伸出来的线条称为「晶须」(whiskers),用来表示上、下四分位数以外的变量。异常值 (Outliers) 有时会以与晶须处于同一水平的单一数据点表示。

    箱形图通常用于描述性统计,是以图形方式快速查看一个或多个数据集的好方法。

    推荐的制作工具有:AnyChart、D3、Protovis、R AWGraphs、R Graph Gallery、ZingChart。

    子弹图

    8394e1a2ad9add2e7f1c2c91bd9f4dbc.png

    子弹图 (Bullet Graph) 的功能类似于条形图,但加入更多视像元素,提供更多补充信息。

    子弹图最初由 Stephen Few 开发,用来取代仪表盘上如里程表或时速表这类图形仪表,解决显示信息不足的问题,而且能有效节省空间,更可除掉仪表盘上一些不必要的东西。

    推荐的制作工具有:am chartsAnyChart、D3、DimpleJS、IgniteUI、jChartFX 、moderndata.plot.ly、NVD3.js、Protovis。

    蜡烛图

    c9c2c6d497c4658bea5d1ceb9db8e481.png

    又名「日本K线图」,通常用来显示和分析证券、衍生工具、外汇货币、股票、债券等商品随着时间的价格变动。

    蜡烛图通过使用烛台式的符号来显示多种价格信息,例如开盘价、收盘价、最高价和最低价,每个代表单一时间段(每分钟、每小时、每天或每月)的交易活动。每个烛台符号沿着 X 轴上的时间刻度绘制,显示随着时间推移的交易活动。

    但是,蜡烛图只能显示开盘价和收盘价之间的关系,而非两者之间所发生的事件,因此也无法用来解释交易波动的缘由。

    推荐的制作工具有:Aaron Beppu's Block、amcharts、AnyChart、CanvasJS、ECharts、Google Chart、Google Docs、infogr.am、plotly、Protovis、ZingChart、ZoomCharts

    跨度图

    29e78ac01e290115ebdd0279b990c476.png

    也称为「范围条形/柱形图」或「浮动条形图」,用来显示数据集内最小值和最大值之间的范围,适合用来比较范围,尤其是已分类的范围。

    跨度图只集中显示极端数值,不提供任何关于最小值和最大值之间的数值、整体平均值或数据分布等其他信息。

    推荐制作工具有:AnyChart、D3, Arpit Narechania's Block、ZingChart。

    卡吉图

    d227af424c8eb553a7d40bfb58a5cd4c.png

    卡吉图 (Kagi Chart)能通过一系列线段显示价格表现,进而显示特定资产的一般供需水平。由于与时间无直接关系,它能更清晰地显示重要的价格走势。

    推荐的制作工具有:D3、Arpit Narechania's Block、FusionCharts、Ragu Ramaswamy's Block、Wolfram Mathematica、

    美国线

    c9c921061a10b85340b5f913874ea9b3.png

    美国线 (Open-high-low-close Charts) 也称为「OHLC 图」或「价格图」,通常用作交易工具,显示和分析证券、货币、股票、债券等商品随时间的价格变动。

    推荐的制作工具有:Amcharts、AnyChart、ByteMuse.com、CanvasJS、jChartFX、Plotly、vaadin、Zing Chart。

    弦图

    671afe7b1bcf57349362034232c3ca5d.png

    弦图 (Chord Diagram) 可以显示不同实体之间的相互关系和彼此共享的一些共通之处,因此这种图表非常适合用来比较数据集或不同数据组之间的相似性。

    节点围绕着圆周分布,点与点之间以弧线或贝塞尔曲线彼此连接以显示当中关系,然后通过每个圆弧的大小比例再给每个连接分配数值。此外,也可以用颜色将数据分成不同类别,有助于进行比较和区分。

    推荐的制作工具有:Circos、D3、R Graph Gallery、ZingChart。

    非彩带弦图

    39a658928b18076e85ea7f3e506a750a.png

    非彩带弦图 (Non-ribbon Chord Diagram) 是弦图的一个精简版本,仅显示节点和连接线,更加强调数据之间的连接关系。

    推荐的制作工具有:Circos。

    树形图

    3e5afdf1985d4ba80c7e0cbbe1d9b48f.png

    树形图 (Tree Diagram) 也称为「组织图」或「链路图」,是通过树状结构表示层次结构的一种方式。

    其结构通常由没有上级/父级成员的元素开始(根节点),然后加入节点,再用线连在一起,称为分支,表示成员之间的关系和连接。最后是枝叶节点(或称为末端节点),是没有子节点的成员。

    树形图通常用于表示家庭关系和血统、分类学、进化科学、计算机科学与数学等,也是企业和组织的管理工具。

    推荐的工具有:Datamatic、Google Charts、Google Docs、giffy、Zoomcharts。

    流程图

    8622a01f7907edfd7933c9b6036f09fd.png

    流程图 (Flow Chart) 使用一系列相互连接的符号绘制出整个过程,从而解释复杂和/或抽象的过程、系统、概念或算法的运作模式。

    不同符号代表不同意思,每种都具有各自的特定形状。流程图以弧形矩形表示流程的开始和结束;线段或箭头用于显示从一个步骤到另一个步骤的方向或流程;简单的指令或动作用矩形来表示,而当需要作出决定时,则使用钻石形状...

    推荐的制作工具有:asciiflow、Creately、draw.io、gliffy、GoJS、Google Drawings、LucidChart、MS Visio。

    脑力激荡图图

    81fde6a5452c855ac3024ec5e305cdee.png

    脑力激荡图也称为「心智图」,可以将相关想法、单词、图像和概念联合在一起。

    脑力激荡图经常在项目初期使用,用来产生想法、查找关联、分类想法、组织信息、显示结构和一般学习。

    推荐的制作工具有:Coggle、MindMup

    记数符号图表

    93a24bb103d83c61379f49c016b250ba.png

    记数符号图表 (Tally Chart) 既是记录工具,也可通过使用标记数字系统来显示数据分布频率。

    在绘制记数符号图表时,将类别、数值或间隔放置在同一个轴或列(通常为 Y 轴或左侧第一列)上。每当出现数值时,在相应的列或行中添加记数符号。

    完成收集所有数据后,把所有标记加起来并把总数写在下一列或下一行中,最终结果类似于直方图。

    推荐的制作工具有:纸和笔。

    日历图

    1a1efd8f86100056994a8ae40d7ecdc1.png

    人类曾开发出各种日历系统作为组织工具,帮助我们提前做好计划。我们也把日历当作可视化工具,适用于显示不同时间段的活动事件的组织情况。

    今天我们最常用的日历形式是公历,每个月份的月历由七个垂直列组成(代表每周七天),另有约五至六行以水平方式代表星期。

    可是,日历格式并没有严格规定,所以市面上有各式各样不同的设计,只要能以时间顺序显示日期或时间单位便可。

    推荐的制作工具有:TimeandDate.com、Calendar Creator、ZingChart

    时间线

    0748a3cf0b85d838862a0ff3b32f2a65.png

    时间线 (Timeline) 是以时间顺序显示一系列事件的图象化方式,主要功能是传达时间相关信息,用于分析或呈现历史故事。

    如果是按比例绘制的时间线,我们可以通过查看不同事件之间的时间间隔,了解事件发生的时间或即将在何时发生,从中查找时间段内的事件是否遵循任何模式,或者事件在该时间段内如何分布。

    有时时间线会与图表相互结合,显示定量数据随时间的变化。

    推荐的制作工具有:Google Charts、Timeline.js、Tiki-Toki、Vega。

    时间表

    918cbb763ef710891cf2a85ae71e3076.png

    时间表 (Timetable) 可用作预定事件、任务和行动的引用和管理工具。

    使用表格按时间顺序和/或字母顺序组织数据,能有助用户快速进行引用。

    象形图

    f1954f02b88fe8b14f3943ba88396f41.png

    说明图旨在使用笔记、标签和图例来解释说明所显示的图像,以便解释概念或方法、描述物件或场所、显示事情的运作变化或帮助了解所显示的主题。

    所使用的图像可以是象征性、图像化或真实相片。

    茎叶图

    f1d802613a5f5857a3fba799b77f8c5b.png

    茎叶图 (Stem & Leaf Plots) 又称为「枝叶图」,是一种按位数 (place value)组织数据的方法,可用来显示数据分布。

    不变的位数由小至大、由上至下显示在中间的「茎」(通常是以十为单位),每个位数之内的数据则会成为「叶」并横向延伸。

    除了向读者快速提供数据分布信息之外,茎叶图也可用于突出异常值和查找模式。如果您有两个数据集,则可使用背对背或双重茎叶图来比较两者。

    推荐的制作工具有:CalculatorSoup、Easycalculation.com、Protovis。

    文氏图

    669f43574816be1c30d1b4b5326fcd62.png

    文氏图 (Venn Diagram) 也称为「集合图」,显示集与集之间所有可能存在的逻辑关系,每个集通常以一个圆圈表示。

    每个集都是一组具有共同之处的物件或数据,当多个圆圈(集)相互重迭时,称为交集 (intersection),里面的数据同时具有重迭集中的所有属性。

    推荐工具有:Datamatic、gliffy、R Graph Gallery、ZingChart。

    小提琴图

    da5701b5f0d16b93fcc94424a19fa060.png

    小提琴图 (Violin Plot) 结合了箱形图和密度图的特征,主要用来显示数据的分布形状。

    中间的黑色粗条表示四分位数范围,从其延伸的幼细黑线代表 95% 置信区间,而白点则为中位数。

    推荐的制作工具有:The R Graph Gallery、seaborn、z-m-k's Blocks。

    字云图

    32519df718edf77923ccc1c9a378b3ce.png

    字云图 (Word Cloud) 也称为「标签云图」、「词云」等,每个此的大小与其出现频率成正比,以此显示不同单词在给定文本中的出现频率,然后将所有的字词排在一起,形成云状图案。

    在字云图上使用颜色通常都是毫无意义的,主要是为了美观,但我们可以用颜色对单词进行分类。

    推荐的制作工具有:D3、Datamatic、Infogr.am、R Graph Gallery、Vega、Visage、Wordclouds.com、Wordle、ZingChart。

    93046e49633cf930dbf6fd3c0f959c49.png

    展开全文
  • 数据可视化的爱好者Severino Ribecca,他在自己的网站上收录了 60 种可视化图表样式以及它们分别适用于什么样的场景,并且推荐了相应的制作工具。 值得一看。 点阵 点阵图表 (Dot Matrix Chart) 以点为单位...

    可视化图表种类如此之多,什么场景下应该用什么图表展示,是一个让人头秃的难题。

    数据可视化的爱好者Severino Ribecca,他在自己的网站上收录了 60 种可视化图表样式以及它们分别适用于什么样的场景,并且推荐了相应的制作工具。

    值得一看。

    点阵图

    图片

    点阵图表 (Dot Matrix Chart) 以点为单位显示离散数据,每种颜色的点表示一个特定类别,并以矩阵形式组合在一起。

    适合用来快速检视数据集中不同类别的分布和比例,并与其他数据集的分布和比例进行比较,让人更容易找出当中模式。

    点数图

    图片

    点数图 (Point & Figure Charts)也称为「P&F 图」,使用由 X 和 O 符号组成的一系列方格来显示特定资产的供需关系。

    这种图表与时间无直接关系,主要集中看资产的过滤价格表现;它也不会显示交易量,其目的只是显示任何供需关系上的变化,称为「突破」(breakouts)。

    推荐制作的工具有:rpnf。

    弧线图

    图片

    弧线图 (Arc Diagram) 是二维双轴图表以外另一种数据表达方式。在弧线图中,节点将沿着 X轴放置,然后再利用弧线表示节点与节点之间的连接关系。

    弧线图适合用来查找数据共同出现的情况。但缺点是:不能如其他双轴图表般清楚显示节点之间的结构和连接,而且过多连接也会使图表难于阅读。

    推荐的制作工具有:Protovis (编程语言)、D3 (编程语言)。

    折线图

    图片

    折线图用于在连续间隔或时间跨度上显示定量数值,最常用来显示趋势和关系。

    此外,折线图也能给出某时间段内的「整体概览」,看看数据在这段时间内的发展情况。

    推荐的制作工具有:MS Excel、Apple Numbers、D3、DataHero、Datamatic、Datawrapper、Envision.js、Google Charts、Google Docs、Infogr.am、OnlineChartTool.com、SlemmaVega。

    平行坐标图

    图片

    平行坐标图 (Parallel Coordinates Plots) 能显示多变量的数值数据,最适合用来比较同一时间的多个变量,并展示它们之间的关系。

    当数据密集时,平行坐标图容易变得混乱、难以辨认。解决办法是通过互动技术,突出显示所选定的一条或多条线,同时淡化所有其他线条,让我们能更集中研究感兴趣的部分,并滤除干扰数据。

    推荐的制作工具有:D3、Protovis、RAWGraphs、The R Graph Gallery、Vega。

    网络图

    图片

    也称为「网络地图」或「节点链路图」,用来显示事物之间的关系类型。

    这些节点通常是圆点或小圆圈,但也可以使用图标。

    网络图主要有分别为「不定向」和「定向」两种。不定向网络图仅显示实体之间的连接,而定向网络图则可显示连接是单向还是双向(通过小箭头)。

    网络图数据容量有限,并且当节点太多时会形成类似「毛球」的图案,使人难以阅读。

    推荐的制作工具有:Cytoscape、Datamatic、Gephi、Graph-tool、Mike Bostock's Block、Plot.ly、sigmajs、Vega、ZoomCharts。

    象形图

     

    象形图 (Pictogram Chart) 也称为「象形统计图」,使用图案来显示数据量。

    使用图案能克服语言、文化和教育水平方面的差异,是更具代表性的数据显示方法。举个例子,如果数据是「5 辆车」,图中便会显示 5 个汽车图案。

    推荐的制作工具有:Infogr.am、jChart。

    直方图

    直方图适合用来显示在连续间隔或特定时间段内的数据分布,有助于估计数值集中位置、上下限值以及确定是否存在差距或异常值;也可粗略显示概率分布。

    推荐的制作工具有:MS Excel、Apple Numbers、D3、Datavisual、Google Docs、Infogr.am、OnlineChartTool.com、Protovis、R Graph Gallery、Slemma。

    密度图

    图片

    密度图 (Density Plot) 又称为「密度曲线图」,用于显示数据在连续时间段内的分布状况。

    这种图表是直方图的变种,使用平滑曲线来绘制数值水平,从而得出更平滑的分布,并且它们不受所使用分组数量的影响,所以能更好地界定分布形状 。

    推荐的制作工具有:The R Graph Gallery、Cookbook for R。

    人口金字塔

    图片

    人口金字塔 (Population Pyramid) 也称为「年龄性别金字塔」,是彼此背靠背的一对直方图,显示所有年龄组和男女人口的分布情况。

    人口金字塔最适合用来检测人口模式的变化或差异。多个人口金字塔放在一起更可用于比较各国或不同群体之间的人口模式。

    推荐制作的工具有:AnyChart、D3 (重叠版本)、Vega、ZingChart。

    条形图

    图片

     

    条形图 (Bar Chart) 也称为「棒形图」或「柱形图」,采用水平或垂直条形(柱形图)来比较不同类别的离散数值。

    图表其中一条轴代表要比较的具体类别,另一条则用作离散数值的标尺。

    条形图的离散数据是分类数据,针对的是单一类别中的数量多少,而不会显示数值在某时间段内的持续发展。

    推荐的制作工具有:MS Excel & Apple Numbers、AnyChart、D3 、DataHero、Datamatic、Datawrapper、Google Charts、Google Docs、Infogr.am、OnlineChartTool.com、Protovis、Slemma、Vega、ZoomCharts。

    多组条形图

    多组条形图也称为「分组条形图」或「复式条形图」,是条形图的变种。

    多组条形图通常用来将分组变量或类别与其他数据组进行比较,也可用来比较迷你直方图,每组内的每个条形将表示变量的显著间隔。

    但缺点是,当有太多条形组合在一起时将难以阅读。

    推荐的制作工具有:D3、DataHero、Datavisual、Datawrapper、Infogr.am、NVD3.js、R Graph Gallery、Slemma、Vega、Visage、ZoomCharts。

    堆叠式条形图

    图片

    跟多组条形图不同,堆叠式条形图 (Stacked Bar Graph) 将多个数据集的条形彼此重迭显示,适合用来显示大型类别如何细分为较小的类别,以及每部分与总量有什么关系。

    堆叠式条形图共分成两种:

    • 简单堆叠式条形图。将分段数值一个接一个地放置,条形的总值就是所有段值加在一起,适合用来比较每个分组/分段的总量。

    • 100% 堆叠式条形图。会显示每组占总体的百分比,并按该组每个数值占整体的百分比来绘制,可用来显示每组中数量之间的相对差异。

    推荐的制作工具有:MS Excel、Apple Numbers、AnyChart、Datavisual、Datawrapper、Infogr.am、Slemma、ZingChart、ZoomCharts。

    不等宽柱状图

    图片

    不等宽柱状图 (Marimekko Chart)也称为「马赛克图」,用来显示分类数据中一对变量之间的关系,原理类似双向的 100% 堆叠式条形图,但其中所有条形在数值/标尺轴上具有相等长度,并会被划分成段。

    不等宽柱状图的主要缺点在于难以阅读,特别是当含有大量分段的时候。此外,我们也很难准确地对每个分段进行比较,因为它们并非沿着共同基线排列在一起。

    因此,不等宽柱状图较为适合提供数据概览。

    推荐的制作工具有:D3。

    面积图

    图片

    面积图 (Area Graph) 是折线图的一种,但线下面的区域会由颜色或纹理填满。

    跟折线图一样,面积图可显示某时间段内量化数值的变化和发展,最常用来显示趋势,而非表示具体数值。

    两种较常用的面积图是分组式面积图和堆叠式面积图。分组式面积图在相同的零轴开始,而堆叠式面积图则从先前数据系列的最后数据点开始。

    推荐的制作工具有:MS Excel & Apple Numbers、D3、DataHero、Datamatic、Google Charts、Google Docs、Infogr.am、Protovis、Slemma、VegaOnlineChartTool.com。

    比例面积图

    图片

    非常适合用来比较数值和显示比例(尺寸、数量等),以便快速全面地了解数据的相对大小,而无需使用刻度。

    比例面积图通常使用正方形或圆形,常见技术错误是,使用长度来确定形状大小,而非计算形状中的空间面积,导致数值出现指数级的增长和减少。

    推荐的制作工具有:D3、Datamatic、Datavisual、Infogr.am

    堆叠式面积图

    图片

    堆叠式面积图 (Stacked Area Graph) 的原理与简单面积图相同,但它能同时显示多个数据系列,每一个系列的开始点是先前数据系列的结束点。

    堆叠式面积图使用区域面积来表示整数,因此不适用于负值。总的来说,它们适合用来比较同一间隔内多个变量的变化。

    推荐的制作工具有:MS Excel、Apple Numbers、DataHero、Datavisual、Google Docs、Infogr.am、OnlineChartTool、Slemma、Vega、ZingChart、ZoomCharts。

    量化波形图

    图片

    这种图表是堆叠式面积图的一种变体,但其数值并非沿着固定直线轴来绘制,而是围绕着不断变化的中心基线。

    通过使用流动的有机形状,量化波形图 (Stream Graph) 可显示不同类别的数据随着时间的变化,这些有机形状有点像河流,因此量化波形图看起来相当美观。

    在量化波形图中,每个波浪的形状大小都与每个类别中的数值成比例。与波形图平行流动的轴用作时间刻度。我们也可以用不同颜色区分每个类别,或者通过改变色彩来显示每个类别的附加定量值。

    此外,当他们以互动形式展示时,比静态或印刷出来更有效率。

    推荐的制作工具有:Bob Rudis' GitHub、D3、infogr.am、JSFiddle、Lee Byron's GitHub、NVD3.js、plotDB、Protovis、RAWGraphs、Stream graph generator。

    雷达图

    图片

    雷达图 (Radar Chart) 又称为「蜘蛛图」、「极地图」或「星图」,是用来比较多个定量变量的方法,可用于查看哪些变量具有相似数值,或者每个变量中有没有任何异常值。

    此外,雷达图也可用于查看数据集中哪些变量得分较高/低,是显示性能表现的理想之选。

    每个变量都具有自己的轴(从中心开始)。所有的轴都以径向排列,彼此之间的距离相等,所有轴都有相同的刻度。轴与轴之间的网格线通常只作指引用途。每个变量数值会画在其所属轴线之上,数据集内的所有变量将连在一起形成一个多边形。

    推荐的制作工具有:Amcharts、AnyChart、Google Docs、jChartFX、Online Chart Tool、ZingChart。

    桑基图

    图片

     

    桑基图 (Sankey Diagram) 用来显示流向和数量。

    在每个流程阶段中,流向箭头或线可以组合在一起,或者往不同路径各自分开。我们可用不同颜色来区分图表中的不同类别,或表示从一个阶段到另一个阶段的转换。

    推荐的制作工具有:RAWGraphs、Sankey Diagram Generator、Sankey Diagrams Blog Software List、Sankey Flow Show、SankeyMATIC、Tamc。

    平行集合图

    图片

    平行集合图与桑基图类似,都显示流程和比例,但平行集合图不使用箭头,它们在每个所显示的线集 (line-set) 划分流程路径。

    每个线集对应于一个维度/数据集,其数值/类别由该线集内的不同线段所表示。每条线的宽度和流程路径,均由类别总数的比例份数所决定。每条流程路径都可以用不同颜色代表,以显示和比较不同类别之间的分布。

    推荐工具有:EagerEyes: ParallelSets、Jason Davies、Sankey Diagram Generator、SankeyMATIC。

    误差线

    图片

    误差线可以作为一项增强功能来显示数据变化,通常用于显示范围数据集中的标准偏差、标准误差、置信区间或最小/最大值。

    误差线总是平行于定量标尺的轴线,可以是垂直或水平显示(取决于定量标尺是在 Y 轴还是 X 轴上)。

    推荐的工具有:AnyChart、Highcharts、plotly、Vega。

    树形结构图

    图片

    树状结构图 (Treemap) 是一种利用嵌套式矩形显示层次结构的方法,同时通过面积大小显示每个类别的数量。

    每个类别会获分配一个矩形区域,而其子类别则由嵌套在其中的小矩形代表。当不同数量被分配到各个类别时,这些矩形的面积大小会与此数量成正比显示。

    Ben Shneiderman 最初开发树状结构图用来在计算机上显示大量文件目录,而不会占用太多屏幕空间,因此树状结构图是一种紧凑而且节省空间的层次结构显示方式,可让人快速了解结构。

    推荐的制作工具有:AnyChart、D3、Datamatic、Google Charts、Google Docs、Infogr.am、jChartFX、RAWGraphs、Slemma、Vega、ZingChart。

    圆堆积图

    圆堆积 (Circle Packing) 也称为「圆形树结构图」,是树形结构图的变体,使用圆形(而非矩形)一层又一层地代表整个层次结构。

    每个圆形的面积也可用来表示额外任意数值,如数量或文件大小。我们也可用颜色将数据进行分类,或通过不同色调表示另一个变量。

    虽然圆堆积看起来漂亮,但不及树形结构图般节省空间(因为圆圈内会有很多空白处),可是它实际上比树形结构图更能有效显示层次结构。

    推荐的制作工具有:D3、D3 Zoomable、RAWGraphs。

    饼图

    图片

    饼形图 (Pie Chart) 把一个圆圈划分成不同比例的分段,以展示各个类别之间的比例。

    饼形图适合用来快速展示数据比例分布,但主要缺点是:不能显示太多项目、通常需要图例说明、不能准确比较。

    制作工具有很多:D3、DataHero、Datamatic、Datavisual、Datawrapper、Google Charts、 Google Docs、Infogr.am、Protovis、OnlineChartTool.com、Slemma、ZingChart...

    圆环图

    图片

    圆环图 (Donut Chart) 基本上就是饼形图,只是中间的部分被切掉。

    不过,圆环图还是比饼形图略有优势,它让人不再只看「饼」的面积,反面更重视总体数值的变化:专注于阅读弧线的长度,而不是比较「饼与饼」之间的比例不同。

    另外,圆环图中间的空白处更可以用来显示其他信息,因此更能节省空间。

    推荐的制作工具有:D3、DataHero、Datamatic、Datavisual、Datawrapper、Google Docs、Infogr.am、Protovis、Slemma、Visage、ZingChart、ZoomCharts。

    南丁格尔玫瑰图

    南丁格尔玫瑰图 (Nightingale Rose Charts) 又称为「极面积图」。

    统计学家和医学改革家佛罗伦萨‧南丁格尔 (Florence Nightingale) 曾在克里米亚战争期间使用这种图表传达士兵身亡情况,故得名。

    在南丁格尔玫瑰图中,代表数值的是分段面积,而不是其半径。

    推荐的制作工具有:Datamatic、Infogr.am。

    旭日图

    也称为「多层饼形图」或「径向树图」,通过一系列的圆环显示层次结构,再按不同类别节点进行切割。

    推荐的制作工具有:Aculocity、D3、JavaScript InfoVis Toolkit、MS Office、Protovis、RAWGraphs、

    螺旋图

     

    也称为「时间系列螺旋图」,沿阿基米德螺旋线 (Archimedean spiral) 画上基于时间的数据。

    图表从螺旋形的中心点开始往外发展。螺旋图十分多变,可使用条形、线条或数据点,沿着螺旋路径显示。

    螺旋图很适合用来显示大型数据集,通常显示长时间段内的数据趋势,因此能有效显示周期性的模式。

    推荐的制作工具有:Arpit Narechania's Block。

    径向条形图

    图片

    径向条形图是在极坐标系上绘制的条形图。

    虽然看起来很美观,但径向条形图上条形的长度可能会被人误解。

    推荐制作工具有:AnyChart。

    径向柱图

     

    也称为「圆形柱图」或「星图」。

    这种图表使用同心圆网格来绘制条形图。每个圆圈表示一个数值刻度,而径向分隔线则用作区分不同类别或间隔(如果是直方图)。

    条形通常从中心点开始向外延伸,但也可以别处为起点以显示数值范围(如跨度图)。此外,条形也可以如堆叠式条形图般堆叠起来。

    推荐的制作工具有:jChartFX、Bokeh。

    热图

    热图 (Heatmap) 通过色彩变化来显示数据,当应用在表格时,热图适合用来交叉检查多变量的数据。

    热图适用于显示多个变量之间的差异;显示当中任何模式;显示是否有彼此相似的变量;以及检测彼此之间是否存在任何相关性。

    由于热图依赖颜色来表达数值,它比较适合用来显示广泛数值数据,因为要准确地指出色调之间的差异始终有难度,也较难从中提取特定数据点(除非在单元格中加入原始数据)。

    推荐的制作工具有:MS Excel、Apple Numbers、Amcharts、AnyChart、Highcharts、jChartFX、plot.ly、R Graph、Zing Chart。

    散点图

     

    散点图 (Scatterplot) 也称为「点图」、「散布图」或「X-Y 点图」,用来显示两个变量的数值(每个轴上显示一个变量),并检测两个变量之间的关系或相关性是否存在。

    图表中可加入直线或曲线来辅助分析,并显示当所有数据点凝聚成单行时的模样,通常称为「最佳拟合线」或「趋势线」。

    如您有一对数值数据,可使用散点图来查看其中一个变量是否在影响着另一个变量。可是请记住,相关性并非因果关系,也有可能存在另一个变量在影响着结果。

    推荐的制作工具有:MS Excel、Apple Numbers、D3、DataHero、Datavisual、Google Charts、Google Docs、Infogr.am、OnlineChartTool.com、Vega、Visage、ZingChart。

    气泡图

    图片

    气泡图是一种包含多个变量的图表,结合了散点图和比例面积图,圆圈大小需要按照圆的面积来绘制,而非其半径或直径。

    通过利用定位和比例,气泡图通常用来比较和显示已标记/已分类的圆圈之间的关系。

    可是,过多气泡会使图表难以阅读,但我们可以在图表中加入交互性功能来解决这个问题(点击或把鼠标悬停在气泡上以显示隐藏信息),也可选择重组或筛选分组类别。

    推荐制作的工具有:AnyChart、Google Charts、Google Docs、Infogr.am、jChartFX、Online Chart Tool、RAWGraphs、Slemma、Visage、ZingChart

    气泡地形图

    图片

     

    在这种数据地图中,指定地理区域上方会显示圆形图案,圆形面积与其在数据集中的数值会成正比。

    气泡地图适合用来比较不同地理区域之间的比例,而不会受区域面积的影响。但气泡地图的主要缺点在于:过大的气泡可能会与地图上其他气泡或区域出现重迭。

    推荐的制作工具有:AnyChart、CARTO、Datavisual、Khartis、Google docs、Polymaps、ZoomCharts。

    地区分布图

    地区分布图通常用来显示不同区域与数据变量之间的关系,并把所显示位置的数值变化或模式进行可视化处理。

    我们在地图上每个区域以不同深浅度的颜色表示数据变量,例如从一种颜色渐变成另一种颜色、单色调渐进、从透明到不透明、从光到暗,甚至动用整个色谱。

    但缺点是无法准确读取或比较地图中的数值。此外,较大的地区会比较小区域更加显眼,影响读者对数值的感知。

    绘制地区分布图时的常见错误:对原始数据值(例如人口)进行运算,而不是使用归一化值(例:计算每平方公里的人口)。

    推荐的制作工具有:amMaps、D3、d3.geomap、Google Charts、Google Docs、DataHero、Datamatic、Datawrapper、Infogr.am、Kartograph、Polymaps、Slemma、Target Map.com、Vega。

    点示地图

    点示地图 (Dot Map) 也称为「点示分布图」或「点示密度图」。在地理区域上放置相等大小的圆点,旨在检测该地域上的空间布局或数据分布。

    点示地图共有两种:一对一(每点代表单一计数或一件物件)和一对多(每点表示一个特定单位,例如 1 点 = 10棵树)。

    点示地图非常适合用来查看物件在某地域内的分布状况和模式,而且容易掌握,能提供数据概览。

    推荐的制作工具有:AnyChart、CARTO、Datavisual、Infogr.am、Khartis、mbostock's blocks、R Graph Gallery、ZoomCharts。

    连接地图

    图片

     

    连接地图 (Connection Map) 是用直线或曲线连接地图上不同地点的一种图表。

    连接地图非常适合用来显示地理连接和关系,也可以通过研究连接地图上的连接分布或集中程度来显示空间格局。

    推荐的制作工具是:AnyChart、ECharts、Javascript Maps、Curved、Straight、ZoomCharts。

    流向地图

    图片

    流向地图 (Flow Map) 在地图上显示信息或物体从一个位置到另一个位置的移动及其数量,通常用来显示人物、动物和产品的迁移数据。

    单一流向线所代表的移动规模或数量由其粗幼度表示,有助显示迁移活动的地理分布。

    推荐的制作工具有:AnyChart。

    甘特图

     

    甘特图 (Gantt Chart) 通常用作项目管理的组织工具,显示活动(或任务)列表和持续时间,也显示每项活动何时开始和结束。

    甘特图适合用来规划和估计整个项目的所需时间,也可显示相互重迭的活动。

    推荐的制作工具有:AnyChart、Amcharts、DHTMLX、GanttPro、Google Charts、Redbooth、RAWGraphs、Smartsheet。

    箱形图

    箱形图又称为「盒须图」或「箱线图」,能方便显示数字数据组的四分位数,可以垂直或水平的形式出现。

    从盒子两端延伸出来的线条称为「晶须」(whiskers),用来表示上、下四分位数以外的变量。异常值 (Outliers) 有时会以与晶须处于同一水平的单一数据点表示。

    箱形图通常用于描述性统计,是以图形方式快速查看一个或多个数据集的好方法。

    推荐的制作工具有:AnyChart、D3、Protovis、R AWGraphs、R Graph Gallery、ZingChart。

    子弹图

    图片

    子弹图 (Bullet Graph) 的功能类似于条形图,但加入更多视像元素,提供更多补充信息。

    子弹图最初由 Stephen Few 开发,用来取代仪表盘上如里程表或时速表这类图形仪表,解决显示信息不足的问题,而且能有效节省空间,更可除掉仪表盘上一些不必要的东西。

    推荐的制作工具有:am chartsAnyChart、D3、DimpleJS、IgniteUI、jChartFX 、moderndata.plot.ly、NVD3.js、Protovis。

    蜡烛图

    图片

    又名「日本K线图」,通常用来显示和分析证券、衍生工具、外汇货币、股票、债券等商品随着时间的价格变动。

    蜡烛图通过使用烛台式的符号来显示多种价格信息,例如开盘价、收盘价、最高价和最低价,每个代表单一时间段(每分钟、每小时、每天或每月)的交易活动。每个烛台符号沿着 X 轴上的时间刻度绘制,显示随着时间推移的交易活动。

    但是,蜡烛图只能显示开盘价和收盘价之间的关系,而非两者之间所发生的事件,因此也无法用来解释交易波动的缘由。

    推荐的制作工具有:Aaron Beppu's Block、amcharts、AnyChart、CanvasJS、ECharts、Google Chart、Google Docs、infogr.am、plotly、Protovis、ZingChart、ZoomCharts

    跨度图

     

    也称为「范围条形/柱形图」或「浮动条形图」,用来显示数据集内最小值和最大值之间的范围,适合用来比较范围,尤其是已分类的范围。

    跨度图只集中显示极端数值,不提供任何关于最小值和最大值之间的数值、整体平均值或数据分布等其他信息。

    推荐制作工具有:AnyChart、D3, Arpit Narechania's Block、ZingChart。

    卡吉图

    图片

    卡吉图 (Kagi Chart)能通过一系列线段显示价格表现,进而显示特定资产的一般供需水平。由于与时间无直接关系,它能更清晰地显示重要的价格走势。

    推荐的制作工具有:D3、Arpit Narechania's Block、FusionCharts、Ragu Ramaswamy's Block、Wolfram Mathematica、

    美国线

    图片

    美国线 (Open-high-low-close Charts) 也称为「OHLC 图」或「价格图」,通常用作交易工具,显示和分析证券、货币、股票、债券等商品随时间的价格变动。

    推荐的制作工具有:Amcharts、AnyChart、ByteMuse.com、CanvasJS、jChartFX、Plotly、vaadin、Zing Chart。

    弦图

    图片

    弦图 (Chord Diagram) 可以显示不同实体之间的相互关系和彼此共享的一些共通之处,因此这种图表非常适合用来比较数据集或不同数据组之间的相似性。

    节点围绕着圆周分布,点与点之间以弧线或贝塞尔曲线彼此连接以显示当中关系,然后通过每个圆弧的大小比例再给每个连接分配数值。此外,也可以用颜色将数据分成不同类别,有助于进行比较和区分。

    推荐的制作工具有:Circos、D3、R Graph Gallery、ZingChart。

    非彩带弦图

    非彩带弦图 (Non-ribbon Chord Diagram) 是弦图的一个精简版本,仅显示节点和连接线,更加强调数据之间的连接关系。

    推荐的制作工具有:Circos。

    树形图

    树形图 (Tree Diagram) 也称为「组织图」或「链路图」,是通过树状结构表示层次结构的一种方式。

    其结构通常由没有上级/父级成员的元素开始(根节点),然后加入节点,再用线连在一起,称为分支,表示成员之间的关系和连接。最后是枝叶节点(或称为末端节点),是没有子节点的成员。

    树形图通常用于表示家庭关系和血统、分类学、进化科学、计算机科学与数学等,也是企业和组织的管理工具。

    推荐的工具有:Datamatic、Google Charts、Google Docs、giffy、Zoomcharts。

    流程图

    图片

    流程图 (Flow Chart) 使用一系列相互连接的符号绘制出整个过程,从而解释复杂和/或抽象的过程、系统、概念或算法的运作模式。

    不同符号代表不同意思,每种都具有各自的特定形状。流程图以弧形矩形表示流程的开始和结束;线段或箭头用于显示从一个步骤到另一个步骤的方向或流程;简单的指令或动作用矩形来表示,而当需要作出决定时,则使用钻石形状...

    推荐的制作工具有:asciiflow、Creately、draw.io、gliffy、GoJS、Google Drawings、LucidChart、MS Visio。

    脑力激荡图图

    图片

    脑力激荡图也称为「心智图」,可以将相关想法、单词、图像和概念联合在一起。

    脑力激荡图经常在项目初期使用,用来产生想法、查找关联、分类想法、组织信息、显示结构和一般学习。

    推荐的制作工具有:Coggle、MindMup

    记数符号图表

    图片

    记数符号图表 (Tally Chart) 既是记录工具,也可通过使用标记数字系统来显示数据分布频率。

    在绘制记数符号图表时,将类别、数值或间隔放置在同一个轴或列(通常为 Y 轴或左侧第一列)上。每当出现数值时,在相应的列或行中添加记数符号。

    完成收集所有数据后,把所有标记加起来并把总数写在下一列或下一行中,最终结果类似于直方图。

    推荐的制作工具有:纸和笔。

    日历图

    图片

    人类曾开发出各种日历系统作为组织工具,帮助我们提前做好计划。我们也把日历当作可视化工具,适用于显示不同时间段的活动事件的组织情况。

    今天我们最常用的日历形式是公历,每个月份的月历由七个垂直列组成(代表每周七天),另有约五至六行以水平方式代表星期。

    可是,日历格式并没有严格规定,所以市面上有各式各样不同的设计,只要能以时间顺序显示日期或时间单位便可。

    推荐的制作工具有:TimeandDate.com、Calendar Creator、ZingChart

    时间线

    图片

    时间线 (Timeline) 是以时间顺序显示一系列事件的图象化方式,主要功能是传达时间相关信息,用于分析或呈现历史故事。

    如果是按比例绘制的时间线,我们可以通过查看不同事件之间的时间间隔,了解事件发生的时间或即将在何时发生,从中查找时间段内的事件是否遵循任何模式,或者事件在该时间段内如何分布。

    有时时间线会与图表相互结合,显示定量数据随时间的变化。

    推荐的制作工具有:Google Charts、Timeline.js、Tiki-Toki、Vega。

    时间表

    图片

    时间表 (Timetable) 可用作预定事件、任务和行动的引用和管理工具。

    使用表格按时间顺序和/或字母顺序组织数据,能有助用户快速进行引用。

    象形图

     

    说明图旨在使用笔记、标签和图例来解释说明所显示的图像,以便解释概念或方法、描述物件或场所、显示事情的运作变化或帮助了解所显示的主题。

    所使用的图像可以是象征性、图像化或真实相片。

    茎叶图

    茎叶图 (Stem & Leaf Plots) 又称为「枝叶图」,是一种按位数 (place value)组织数据的方法,可用来显示数据分布。

    不变的位数由小至大、由上至下显示在中间的「茎」(通常是以十为单位),每个位数之内的数据则会成为「叶」并横向延伸。

    除了向读者快速提供数据分布信息之外,茎叶图也可用于突出异常值和查找模式。如果您有两个数据集,则可使用背对背或双重茎叶图来比较两者。

    推荐的制作工具有:CalculatorSoup、Easycalculation.com、Protovis。

    文氏图

    图片

    文氏图 (Venn Diagram) 也称为「集合图」,显示集与集之间所有可能存在的逻辑关系,每个集通常以一个圆圈表示。

    每个集都是一组具有共同之处的物件或数据,当多个圆圈(集)相互重迭时,称为交集 (intersection),里面的数据同时具有重迭集中的所有属性。

    推荐工具有:Datamatic、gliffy、R Graph Gallery、ZingChart。

    小提琴图

    图片

    小提琴图 (Violin Plot) 结合了箱形图和密度图的特征,主要用来显示数据的分布形状。

    中间的黑色粗条表示四分位数范围,从其延伸的幼细黑线代表 95% 置信区间,而白点则为中位数。

    推荐的制作工具有:The R Graph Gallery、seaborn、z-m-k's Blocks。

    字云图

     

    字云图 (Word Cloud) 也称为「标签云图」、「词云」等,每个此的大小与其出现频率成正比,以此显示不同单词在给定文本中的出现频率,然后将所有的字词排在一起,形成云状图案。

    在字云图上使用颜色通常都是毫无意义的,主要是为了美观,但我们可以用颜色对单词进行分类。

    推荐的制作工具有:D3、Datamatic、Infogr.am、R Graph Gallery、Vega、Visage、Wordclouds.com、Wordle、ZingChart。

    展开全文
  • 数据可视化图表使用场景大全 !

    千次阅读 2020-12-21 13:42:03
    不过,圆环图还是比饼形图略有优势,它让人不再只看「饼」的面积,反面更重视总体数值的变化:专注于阅读弧线的长度,而不是比较「饼与饼」之间的比例不同。 另外,圆环图中间的空白处更可以用来显示其他信息,因此...
  • 不过,圆环图还是比饼形图略有优势,它让人不再只看「饼」的面积,反面更重视总体数值的变化:专注于阅读弧线的长度,而不是比较「饼与饼」之间的比例不同。 另外,圆环图中间的空白处更可以用来显示其他信息,因此...
  • 数据可视化的爱好者Severino Ribecca,他在自己的网站上收录了 60 种可视化图表样式以及它们分别适用于什么样的场景,并且推荐了相应的制作工具。 点阵 点阵图表 (Dot Matrix Chart) 以点为单位显示离散数据,每...
  • (信息技术)信息技术练习题套题 信息技术练习题套题(三) 壹、选择题(单项选择题,每小题2分,共40分) 1、某医院的多名医生和护士,于为某壹名垂危病人做手术时,通过壹些医疗监视设备时 时了解病人的心电、血压...
  • 《C#开发实例大全(基础卷)》筛选、汇集了C#开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析解读。全书分6篇共25章,主要...
  • 山东省计算机初级文化基础考试试题1到5套.doc
  • 《信息技术应用》复习题A 一、单选题 1. 第一代计算机采用的电子逻辑元件是( ) A. 晶体管 B. 电子管 C. 集成电路 D. 超大规模集成电路 2.... A. 办公自动化 B. 人工智能 C....所谓32位机是 指该计算机所用的CPU( ) A....
  • 大学计算机基础操作题(1).doc
  • python绘图 转

    2020-12-03 10:19:32
    饼形图事宜扇形的面积来指代某类型的频率,使用Matplotlib对图书借阅量这一定性变量绘制饼形图的代码如下: #绘制饼形图 defdrawPie(books): labels=['A','B','C','D','E'] bookGroup={}for book inbooks: bookGroup...
  • c++ 操作Word

    2019-10-01 17:13:06
    你可以实现诸如:Word文件打印、传送数据到Word文档、发送E-MAIL、自动产生表格、Excel数据统计、圆饼,直方显示、自动报表生成、播放幻灯、doc,txt,HTML,rtf文件转换、中文简繁体转换、拼音或笔画排序.........
  • 2022会计电算化考试试题收集.pdf
  • VC++ 操作 word

    千次阅读 2016-08-19 15:45:03
    你可以实现诸如:Word文件打印、传送数据到Word文档、发送E-MAIL、自动产生表格、Excel数据统计、圆饼,直方显示、自动报表生成、播放幻灯、doc,txt,HTML,rtf文件转换、中文简繁体转换、拼音或笔画排序.........
  • 考任务1 题目顺序随机,请使用键盘上Ctrl+F组合键查找题目 题目:“AIDA说”包括以下哪几个因素? 记忆 行动 注意 兴趣 欲望 题目:“宾馆的档次等级”、“员工的能力等级”等这一类型变量属于( )。 命名变量 等...
  • Python绘制饼状/甜甜圈

    万次阅读 多人点赞 2018-11-15 17:31:46
    该模块提供了许多绘图函数,以下记录的是饼状/甜甜圈的相关参数和绘图过程,官方资料详见文末链接。 # 导入相关模块 import numpy as np import matplotlib.pyplot as plt # 使中文正常显示的参数设置 plt....
  • android安卓源码海量项目合集打包-1

    万次阅读 多人点赞 2019-06-11 16:16:24
    │ │ 该Demo主要实现了读取手机中的联系人,并且以字母索引的形式显示,类似于微信中的手机通讯一样的字母索引.rar │ │ 通讯录按首字母排列,关键字查找.rar │ │ 鱼眼索引控件详解之二 —— 快速索引雏形...
  • 数据可视化的爱好者Severino Ribecca,他在自己的网站上收录了 60 种可视化图表样式以及它们分别适用于什么样的场景,并且推荐了相应的制作工具。值得一看。点阵点阵图表 (Dot Matrix Chart) 以点为单位显示离散...
  • 不过,圆环图还是比饼形图略有优势,它让人不再只看「饼」的面积,反面更重视总体数值的变化:专注于阅读弧线的长度,而不是比较「饼与饼」之间的比例不同。 另外,圆环图中间的空白处更可以用来显示其他信息,因此...
  • 实例205 利用MSHFlexGrid控件的合并功能制作 特色报表 366 实例206 动态增加行 367 4.12 二进制数据处理技术 369 实例207 使用存取文件路径的方法存取图片 369 实例208 使用AppendChunk方法将二进制文件 存入...
  • 实例205 利用MSHFlexGrid控件的合并功能制作 特色报表 366 实例206 动态增加行 367 4.12 二进制数据处理技术 369 实例207 使用存取文件路径的方法存取图片 369 实例208 使用AppendChunk方法将二进制文件 存入...
  • Python绘图与可视化

    2020-12-02 13:04:56
    饼形图事宜扇形的面积来指代某类型的频率,使用Matplotlib对图书借阅量这一定性变量绘制饼形图的代码如下: #绘制饼形图 def drawPie(books): labels=['A','B','C','D','E'] bookGroup={} for book in books: book...
  • VC++ 操作Word

    千次阅读 2015-07-03 15:41:07
    你可以实现诸如:Word文件打印、传送数据到Word文档、发送E-MAIL、自动产生表格、Excel数据统计、圆饼,直方显示、自动报表生成、播放幻灯、doc,txt,HTML,rtf文件转换、中文简繁体转换、拼音或笔画排序.........

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 364
精华内容 145
关键字:

word饼形图表制作过程