精华内容
下载资源
问答
  • 技能在制作多图仪表盘场景下,将会特别有用:还需要强调下这里所指的一页图与我们之前介绍过的分面可是大有不同,分面其实是一幅图表中,将分类变量所构成的分类图表分图呈现,但是本质上所有...

    原标题:R语言图表排版之一页多图

    本文转载自公众号:EasyCharts

    这里要分享的图表版面设计其实就是指,在做了很多图的情况下,如何将诸多图表合理的布局在一张大的版面上,而不是一幅一幅的导出最后在其他软件中手动拼凑。

    这个技能在制作多图仪表盘场景下,将会特别有用:

    还需要强调下这里所指的一页多图与我们之前介绍过的分面可是大有不同,分面其实是一幅图表中,将分类变量所构成的分类图表分图呈现,但是本质上所有分面内的单个图表共享标题、图例、坐标轴刻度(虽然可以手动定义)。

    也就是说分面的图表类型与诸多元素都是一样的,但是分面解决不了不同图表的排版布局问题:比如单独绘制而成的一幅散点图、柱形图和一幅饼图,分面将无能为力。

    R语言中可以实现多图同页布局的函数有很多(我所知道的旧有大概四五种),但是有些参数略微复杂不便记忆,这里只跟大家介绍两种:

    一种是grid.layout函数(就是我们昨天所讲到的图表嵌套所用到的是同一个包),另一个是rmisc包中的multiplot函数:

    grid.layout函数:

    require(ggplot2) require(grid)

    绘制备用图表(这里必须给图表命名,因为最后制作汇总图的时候需要引用图表名称)

    chart1

    以上三个函数定义了三个图表对象,如果想要查看图表则只需给出图表名称然后回车即可:

    grid.newpage() ###新建图表版面 pushViewport(viewport(layout = grid.layout(2,2))) ####将版面分成2*2矩阵 vplayout

    ###定义图表的布局规则,也就是指定画布的行显示图表的X轴,列显示图表的Y轴。

    print(chart3, vp = vplayout(1,1:2)) ###将(1,1)和(1,2)的位置画图chart3 print(chart2, vp = vplayout(2,1)) ###将(2,1)的位置画图chart2 print(chart1 , vp = vplayout(2,2)) ###将(2,2)的位置画图chart1

    以上函数将逐步按照之前的位置规则按照对应顺序绘制三幅图表,每打印一次你都可以看到画布上增加一个图表。

    以上是该方法制作一页多图的全部过程,其实因为里面有自定义函数,看起来稍微有点儿麻烦,不过不影响理解。

    multiplot函数:

    library("Rmisc") library("plyr")

    使用multiplot函数制作一页多图的语法非常简单,过程同样也是先制作出单个图表并命名,然后一句函数就搞定:

    multiplot(chart1,chart2,chart3, cols=2)

    虽然使用multiplot函数非常方便高效,但是默认情况下,它不会对单个的图表长宽比例做最优布局,我们的案例中,chart3是一个水平分面图,属于矮款型的,但是multiplot函数将它压缩成长宽近似的矩形,放在四象限的第二个位置。

    整体看上去,第一种方法虽然过程复杂些,但是局部灵活些,可以调整单个图表所占的空间,第二种方式更加高效、快捷,但是布局上欠缺优化(也许是我还没有接触到内部的局部调整参数,有懂的小伙伴儿麻烦指导一下,不胜感激)!

    对了,做完图之后记得使用

    dev.off() #

    函数关闭活动版面,否则会影响之后的其他不相关图表!返回搜狐,查看更多

    责任编辑:

    展开全文
  • 中文版Excel.2007图表宝典 2/2

    热门讨论 2012-04-06 19:01:36
    8.7 在图表表单中显示多个图表/244 第9章 单元格内部制图技术/247 9.1 通过条件格式显示数据/247 9.1.1 数据条/248 9.1.2 色阶/252 9.1.3 图标集/254 9.2 在不使用图表的情况下描绘数据/258 9.3 创建Sparkline图表/...
  • 商务智能架构图表

    2011-10-21 19:47:31
    而广义上的数据可视化则是数据可视化、信息可视化以及科学可视化等等多个领域的统称。 数据可视化起源于1960s计算机图形学,人们使用计算机创建图形图表,可视化提取出来的数据,将数据的各种属性和变量呈现出来。...
  • 用两组变量的数据构成多个坐标点,观察坐标点的分布,从而判断两变量之间是否存在某种关联或总结坐标点的分布模式。 特征与适用 散点图常用于显示和比较跨类别的聚合数据,且数据量越多,散点图的效果也会越明显。从...

    作者:潘彼得

    本文我们将使用Python的三种绘图包Matplotlib、Seaborn、ECharts为大家展示如何对数据进行可视化以及如何选择和解读图表,如有解读不恰当的地方还请各位多多指教。

    散点图概述

    用两组变量的数据构成多个坐标点,观察坐标点的分布,从而判断两变量之间是否存在某种关联或总结坐标点的分布模式。

    特征与适用

    散点图常用于显示和比较跨类别的聚合数据,且数据量越多,散点图的效果也会越明显。从散点图可以解读出的信息有:变量间是否存在数量关联趋势、存在线性还是曲线的关联趋势、判断数据中是否有离群点等。

    数据简介

    本次使用的数据集是使用了seaborn中自带的线上数据,是一组餐厅经营的数据,共7个字段: - 连续型变量有2个:total_bill(消费金额),tip(小费金额); - 离散型变量有5个:sex(性别),smoker(是否吸烟),day(就餐日期:周一~周日),time(就餐时间:Lunch/Dinner),size(就餐人数)。

    #导入需要用到的绘图库
    import matplotlib.pyplot as plt
    import seaborn as sns
    import pyecharts as pye
    
    #导入并查看线上数据集tips
    tips=sns.load_dataset("tips")
    tips.head()
    

    数据思考

    获取到数据之后我们可以从业务角度出发,设想几个问题,带着问题去探索数据

    例如:
    1影响小费金额的大小因素有哪些,分别是什么关系?

    2通过数据探索,我们还可以得知哪些信息?

    3对餐厅有没有经营建议?

    绘图

    Matplotlib.pyplot

    matplotlib是Python的一个绘图库,其中pyplot封装了很多类似 MATLAB 中的绘图相关函数,是Python比较常用绘图方式,绘图可定制性较强,图片也会根据参数的调整而产生变化。pyplot主要用于交互式绘图和简单的程序化绘图。

    #绘制散点图,查看小费金额与客户消费金额的关系
    plt.scatter(tips.total_bill,tips.tip)
    
    #保存图片,可直接写入存储路径
    plt.savefig('plt-散点图1.jpg')
    

    在这里插入图片描述

    通过设置函数参数,把它变成我们想要的样式:

    #设置坐标点参数
    plt.scatter(tips.total_bill,tips.tip,                        
                marker = '*',     #数据点的形状
                label = 'money',  #数据标签名称
                s = 50,           #数据点大小
                c = 'y',          #数据点填充颜色
                edgecolors='m')   #数据点边缘颜色
    #设置轴参数
    plt.xlabel("total_bill")      #x轴标签名称
    plt.ylabel("tip")             #y轴标签名称
    #设置数据标签参数
    plt.legend(loc='upper left')  
    plt.show()
    


    通过散点图可以看到,小费和消费金额呈正比,即消费金额越大,小费金额越高。

    matplotlib绘图相对基础,根据我们的需求想法设置不同的参数就可以了,有兴趣的可以去官网探索https://matplotlib.org/。

    Seaborn

    Seaborn是基于matplotlib的Python数据可视化库。它提供了一个高级界面,用于绘制引人入胜且内容丰富的统计图形。Seaborn库旨在将可视化作为探索和理解数据的核心部分,有助于帮人们更近距离了解所研究的数据集。无论是在kaggle官网各项算法比赛中,还是互联网公司的实际业务数据挖掘场景中,都有它的身影。

    图一

    #查看小费与消费金额之间的关系,并用吃饭时间表示散点的颜色
    sns.set()  #使用set单独设置画图样式和风格,如未填写任何参数即使用默认样式
    sns.scatterplot(x="total_bill", y="tip",  #设置数据集
                    hue="time",    #用标记点颜色表示的变量
                    data=tips)
    

    在这里插入图片描述
    上图可以看到:1.小费和消费金额呈正比,即消费金额越大,小费金额越高;2.该店晚上客流量高于中午的客流量;3. 小费金额区间大约为[1,6],消费金额大约为区间[8,40]

    图二

    #通过增加参数增加图片显示的信息维度,用散点颜色表示是否抽烟,散点形状表示性别
    sns.scatterplot(x='total_bill',y='tip',data=tips,hue='smoker',
                    style = 'sex',    #用标记点形状表示的变量
                    palette='YlGnBu')  #修改图标色板
    

    在这里插入图片描述
    上图可以看到:1.该店吸烟人士大多为男士;2.小费金额在5以上的大都是不吸烟男士贡献的,但小费金额的最大值是一位吸烟的男士,我们可以把它当作"离群点";3.男士给的小费金额普遍高于女士;

    图三

    #继续增加维度
    sns.relplot(x="total_bill", y="tip", col="time",hue="smoker", style="sex", 
                size="size",        #用点大小表示的变量
                palette="YlGnBu",   #变换色板
                markers=["D", "o"], #标记点的样式,和style对应,style变量有几种分类,需设置相应的点形状
                sizes=(10, 125),    #标记点大小的区间范围
                edgecolor=".2",     #标记点边缘线颜色
                linewidth=.5,       #边缘线的宽度
                data=tips);
    
    

    在这里插入图片描述
    上图可以看到:1.消费金额会随着就餐人数增多而增加,且小费也会随之增加,且该店就餐人数2人同行居多;2.大部分的吸烟人士处于消费金额较底的区间;

    图四

    sns.relplot(x="total_bill", y="tip", col="day",row = 'time',
                hue="smoker", style="sex", size="size",
                palette="YlGnBu", markers=["D", "o"], sizes=(10, 125),
                edgecolor=".2", linewidth=.9, 
                data=tips);
    
    

    在这里插入图片描述
    上图展示了7个维度的信息,绿色圆圈代表吸烟女性,绿色菱形代表吸烟男性,蓝色圆圈代表不吸烟女性,蓝色菱形代表不吸烟男性,可以看出:1.tips数据集时间为周四~周日该店的就餐情况,且客流量主要集中在周四中午和周末晚上;2.此家餐厅女性就餐相对较少;

    Echarts

    ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

    在我看来ECharts最大的特点就是可以让图片动起来,在展示和表现力上更胜一筹。

    from pyecharts import Scatter
    sca = Scatter("散点图",width = 600,height = 300) #设置画布参数
    sca.add("消费与小费金额情况",     #设置图标名称
            tips.total_bill,tips.tip,   #数据集
            xaxis_name="消费金额",yaxis_name="小费",  #x轴,y轴坐标名称
            yaxis_name_gap=35,      #调整x轴坐标名称
            mark_line=["average"],  #标记统计值:均值
            mark_point=["max", "min"],  #标记数据最大最小值
            is_label_show=True)     #是否显示每个坐标点数据
    sca
    from pyecharts import EffectScatter
    es = EffectScatter("动态散点图")
    es.add("effetScatter",tips.total_bill,tips.tip)
    es
    es.render('effectScatter.html')  #将动态图保存为html文件
    

    在这里插入图片描述
    通过对数据的探索,我们可以对此家餐厅提出以下经营建议:

    该店就餐人数2人居多,可适当增加两人餐桌;
    该店就餐女性较少,可考虑做一些活动或适合女性的餐饮来吸引女性;
    该店午餐客流量较少,如果想增加午餐时间客流量,可以进一步探索数据对症下药。

    如果我的分享对你有帮助,请关注我们,以后会有更多精彩的内容呈现。

    展开全文
  • 经过几项目的实践,我想总结一下目前自己对可视化图表和交互设计上的一些心得,希望收到大家的指点。回忆以前学习和制作的统计图,都是最基本的只有X轴、Y轴的单因素变量数据的静态图。现在发现大数据之美就在于...
  • C#.net_经典编程例子400

    热门讨论 2013-05-17 09:25:30
    316 7.10 程序运行 317 实例227 防止程序次运行 317 实例228 开机后程序自动运行 319 实例229 获取任务栏尺寸大小 320 实例230 改变系统提示信息 321 实例231 获取系统环境变量 322...
  • 用 Tableau 制作图表了,该用这些图表来表达观点了。 首先介绍如何探索你的数据,以便了解所发生的情况。例如,最好需要了解变量如何分布的,数据是否有任何问题。你还需要寻找规律并提出有趣的问题。 你还需要...

    用数据表达观点

    用 Tableau 制作图表了,该用这些图表来表达观点了。

    首先介绍如何探索你的数据,以便了解所发生的情况。例如,最好需要了解变量是如何分布的,数据是否有任何问题。你还需要寻找规律并提出有趣的问题。

    你还需要与他人分享你的数据。Tableau 适合创建交互式显示面板和故事,使读者能够自己研究你的数据。显示面板将多个视图变成一种观点。故事对视图和显示面板进行顺序描述。借助显示面板和故事,你的职责是帮助用户与你要讲述的数据故事进行互动。

    观看 Tableau 的教程视频并阅读文档。这么做的原因有两个。首先,他们录制了大量有用的教程视频,几乎不需要做出任何改进。其次,要习惯于使用他们的文档和支持,因为你将经常参考这些资料。

    探索数据

    关于探索数据的一些建议:

    通过制作条形图查看各种类别的记录数量
    制作直方图,看看数据是如何分布的
    制作散布图,看看变量之间的关系
    这里写图片描述
    上图是我进行的一些探索。首先,我查看了不同市场之间记录的分布情况。我还查看了利润。利润似乎与记录不成比例。与欧盟相比,Global Superstore 在拉美的每个记录利润要低。

    然后,我想知道每个记录的利润分布情况。我制作了一个直方图,并进行过滤,仅侧重于中心部分。似乎在接近 0 处,大多数记录的利润都低于 10 美元。分布图偏向正的利润值,但是依然有很多记录表明 Global Superstore 处于亏损状态。

    最后,我通过散布图查看了数量和利润之间的关系。我还通过子类别对数据进行拆分,并按类别标注颜色。这样可以看出不同类别的关系是不同的。可以想象有一条线穿过每组彩色圆点。线条 Technology 比 Office Supplies 的坡度要陡很多,Furniture 则位于二者之间。

    Pages 卡片

    你还可以通过 Pages 文件架浏览群组,轻松地探索数据。通过将维度拖到 Pages 文件架上,你可以在同一图表中轻松地浏览该维度中的每个项目。开启“Show History”后,你就可以查看数据点是如何在页面之间切换的。
    这里写图片描述

    展开全文
  • 今天跟大家分享如何在R语言中利用ggplot函数制作箱线图及其美化。箱线图也是经常会用到的用于呈现数据分布形态的重要的图表类型。还是以ggplot2包内置的数据集为例进行案例演示:ggplot(mpg,aes(class,displ))+geom_...

    今天跟大家分享如何在R语言中利用ggplot函数制作箱线图及其美化。

    箱线图也是经常会用到的用于呈现数据分布形态的重要的图表类型。

    还是以ggplot2包内置的数据集为例进行案例演示:

    ggplot(mpg,aes(class,displ))+geom_boxplot()

    以上是最简单的形式,一个分类变量,一个连续性数值型;我们通过添加分类变量,让箱线图能够呈现更多的数据信息。

    ggplot(diamonds,aes(cut,price,fill=color))+geom_boxplot()

    接下来我们还像往常一样,通过position参数的切换来验证boxplot图表的position参数使用规则:

    ggplot(diamonds,aes(cut,price,fill=color,alpha=1/30))+

    geom_boxplot(position="identity")

    #当将位置设置为不做任何变换时,分类后的箱线图会在对应的X轴分类项相互叠加,造成遮挡阅读不便,不推荐此参数。

    ggplot(diamonds,aes(cut,price,fill=color))+

    geom_boxplot(position="stack")

    根据经验我们就可以猜到,估计使用堆积方式来呈现多维箱线图肯定会失败,因为即便真的将分类箱线图堆积起来,那么其呈现数据分布形态的功能也就丧失殆尽,果然软件是报错的。

    ggplot(diamonds,aes(cut,price,fill=color))+

    geom_boxplot(position="dodge")

    果然在添加有多分类变量时,箱线图默认使用的position参数是dodge。

    ggplot(diamonds,aes(cut,price,fill=color))+

    geom_boxplot(position="fill")

    同样将position参数设定为堆积百分比也毫无意义,软件没有通过并提出警示。

    ggplot(diamonds,aes(cut,price,fill=color))+

    geom_boxplot()+

    facet_grid(.~color)

    ggplot(diamonds,aes(cut,price,fill=color))+

    geom_boxplot()+

    facet_wrap(~color)

    仔细体会两种分面函数效果的差异:

    箱线图美化:

    簇状:

    ggplot(diamonds,aes(cut,price,fill=color))+

    geom_boxplot()+

    ggtitle("Box Plot")+

    theme_wsj()+

    scale_fill_wsj()+

    guides(fill=guide_legend(title=NULL))

    ggplot(diamonds,aes(cut,price,fill=color))+

    geom_boxplot()+

    ggtitle("Box Plot")+

    theme_economist()+

    scale_fill_economist()+

    guides(fill=guide_legend(title=NULL))

    分面:

    ggplot(diamonds,aes(cut,price,fill=color))+

    geom_boxplot()+

    ggtitle("Box Plot")+

    theme_wsj()+

    scale_fill_wsj()+

    guides(fill=guide_legend(title=NULL))+

    facet_grid(.~color)

    ggplot(diamonds,aes(cut,price,fill=color))+

    geom_boxplot()+

    ggtitle("Box Plot")+

    theme_economist()+

    scale_fill_economist()+

    guides(fill=guide_legend(title=NULL))+

    facet_grid(.~color)

    联系方式:

    微信:ljty1991

    个人公众号:数据小魔方(datamofang)

    团队公众号:EasyCharts

    qq交流群:[魔方学院]553270834

    展开全文
  • Foxpro 开发答疑160问

    2014-10-07 19:55:45
    9. 如何制作拖动功能 19 10. 如何进行高级密码处理 23 11. 如何把文字转换成首位拼音码 27 12. 如何防止程序的次开启 28 13. 如何以编程方式添加数据环境到表单 29 14. 如何使用HTML Help Workshop编写HTML...
  • 实例232 监测是否运行多个程序 297 实例233 防止程序多次运行 298 实例234 开机后程序自动运行 299 实例235 获取任务栏尺寸大小 300 实例236 改变系统提示信息 301 实例237 获取系统环境变量 303 实例...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0031 使两个变量位于同一个地址空间 23 0032 利用动态数组作为函数参数 24 0033 调用Register过程的注意事项 24 0034 在Delphi中禁止使用result 24 0035 如何在Delphi中录制代码 24 0036 如何编译器会...
  • 本书在对Excel技术论坛上上百万个提问的分析与提炼的基础上,汇集了用户在使用Excel进行数据处理与分析过程中最常见的需求,通过270多个实例的演示与讲解,将Excel高手的过人技巧手把手教给读者,并帮助读者发挥...
  • 任务250: 关于如何讲述一精彩故事的最佳实践 第21章: Tableau项目篇 任务251: 项目背景与需求分析 任务252: 教育网站指标评估_制作【均分】视图 任务253: 制作【考试成绩】视图 任务254: 制作【学校教育...
  • 12.7.3 设置一个/多个从服务器 12.8 进一步学习 12.9 下一章 第13章 MySQL高级编程 13.1 LOAD DATA INFILE语句 13.2 存储引擎 13.3 事务 13.3.1 理解事务的定义 13.3.2 通过InnoDB使用事务 13.4 外键 ...
  • 程序开发范例宝典>>

    2012-10-24 10:41:28
    表技术、硬件相关开发技术、网络开发技术、Web编程、加密、安全与软件注册、数据结构与算法、C#高级开发、实用工具、程序打包等共21章,572实例。  本书附有配套光盘。光盘提供了书中所有实例的源代码,全部源...
  • 实例124 利用多个表中的字段创建新记录集 223 3.22 修改数据 224 实例125 修改个别行中的个别列 224 实例126 修改单个行的多个列 226 实例127 修改所有行中的某一列 227 实例128 修改数据时使用子查询 228 ...
  • 实例124 利用多个表中的字段创建新记录集 223 3.22 修改数据 224 实例125 修改个别行中的个别列 224 实例126 修改单个行的多个列 226 实例127 修改所有行中的某一列 227 实例128 修改数据时使用子查询 228 ...
  • 实例231 获取系统环境变量 322 实例232 启动屏幕保护 323 7.11 系统隐藏 324 实例233 隐藏、显示任务栏 324 实例234 隐藏、显示开始按钮 325 实例235 查看当前系统版本 326 实例236 使桌面图标文字透明...
  • 表技术、硬件相关开发技术、网络开发技术、Web编程、加密、安全与软件注册、数据结构与算法、C#高级开发、实用工具、程序打包等共21章,572实例。  本书附有配套光盘。光盘提供了书中所有实例的源代码,全部源...
  • 表技术、硬件相关开发技术、网络开发技术、Web编程、加密、安全与软件注册、数据结构与算法、C#高级开发、实用工具、程序打包等共21章,572实例。  本书附有配套光盘。光盘提供了书中所有实例的源代码,全部源...
  • 实例151 不借助第3个变量实现两个变量互换 实例152 计算加权平均值 实例153 检查参数是否成功传递给用户自定义过程 实例154 使用递归过程实现阶乘运算 6.2 综合应用 实例155 制作改变窗体颜色的自定义过程 ...
  • 7.4.2 统计满足多个条件的单元格数量 7.4.3 使用AND筛选条件 7.4.4 使用OR条件 7.4.5 综合使用AND和OR筛选条件 7.4.6 出现频率最高的项的计数 7.4.7 确定特定文本的出现频率 7.4.8 统计唯一值的数目 7.4.9...
  • 7.4.2 统计满足多个条件的单元格数量 7.4.3 使用AND筛选条件 7.4.4 使用OR条件 7.4.5 综合使用AND和OR筛选条件 7.4.6 出现频率最高的项的计数 7.4.7 确定特定文本的出现频率 7.4.8 统计唯一值的数目 7.4.9...
  • 精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
  • C#程序开发范例宝典(第2版).part02

    热门讨论 2012-11-12 07:55:11
    精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
  • Delphi7应用编程150例

    2018-04-05 15:23:33
    实例130 在tdbgrid中显示多个数据库 374 第8章 组件应用实例 377 实例131 实现trichedit中的整行选中 378 实例132 制作类似ie的工具栏 380 实例133 在状态栏里面加入进度条 381 实例134 与word无缝连接 383 实例135 ...
  • C#程序开发范例宝典(第2版).part13

    热门讨论 2012-11-12 20:17:14
    精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
  • 精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...
  • 精选570典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
热门标签
关键字:

多个变量如何制作图表