美文网首页tableau 食谱大圈
用Tableau画幂函数柱状图

用Tableau画幂函数柱状图

作者: 扫地sir | 来源:发表于2019-11-27 15:46 被阅读0次

    本文灵感来源于tableaumagic网站上的两篇文章Drawing Curved Bar Charts in Tableau,用sigmoid函数来画柱状图,大致效果如下。

    另一篇Drawing Triangle Bar Charts in Tableau,三角形柱状图也很有意思,思路一样,但更简单。

    我虽然觉得这两个图都很有意思,但总感觉都不是特别喜欢。我既希望有弧度,又希望有棱角,所以就想到了用幂函数来改造一下。

    不同的幂函数,图形是不一样的,这里符合我期望的就是y=x^-2。但是由于这两条曲线,与x轴和y轴都不相交,所以就需要对计算结果进行一些改造。

    创建数据集

    • data
    Country,Value
    United States,60
    United Kingdom,70
    India,50
    Australia,60
    France,30
    
    • index
    index
    -2.5
    -2.4
    -2.3
    -2.2
    -2.1
    -2
    -1.9
    -1.8
    -1.7
    -1.6
    -1.5
    -1.4
    -1.3
    -1.2
    -1.1
    -1
    -0.9
    -0.8
    -0.7
    -0.6
    -0.5
    0.5
    0.6
    0.7
    0.8
    0.9
    1
    1.1
    1.2
    1.3
    1.4
    1.5
    1.6
    1.7
    1.8
    1.9
    2
    2.1
    2.2
    2.3
    2.4
    2.5
    

    data很简单,就是分类和数值,index是对称的两段-2.5到-0.5,0.5到2.5,步长为0.1(这个步长可以根据需要自由调整),用来增加数据密度。

    Tableau引入数据,连接两张表,自定义两个1的计算字段,就可以连接上。

    创建计算字段

    • X=
    IF [index]>0 then [index]-0.5
    ELSE [index]+0.5
    END
    

    这里需要对左右的曲线进行平移,负数的往右移动0.5,正数的往左移动0.5,这样两条曲线的最高点就在x=0时候相交于y轴上了。

    • Y=(([index]^-2)-0.16)*[Value]

    为了保证曲线初始点为0,需要减去0.16,就是2.5(-2.5)负二次方之后的值,乘[Value]确定了图形高度

    • label=IIF([X]=0,(([index]^-2)-0.16)*[Value],NULL)

    为了只在最高点显示数值

    开始做图

    • 把[Country]和[X]拖到列功能区,注意都改成维度、离散

    • 把[Y]拖到行功能区,计算依据是平均值

    • 标记类型选择“多边形”,[X]拖到路径,[Country]拖到颜色

    • 拖动[label]到行功能区,计算依据是平均值,类型选择“圆”,双轴并同步轴,根据需要增加标签,去掉不用的线,就大功告成了。

    改进图形

    由于[Country]这个维度字段的加入,图形是分隔在维度的不同值内的,下面对X轴进行改进,让图形重叠,制造不一样的效果。

    • 创建参数Distance
    • TC_Value=WINDOW_MAX(MAX([Value]))

    • TC_Country Rank=RANK_UNIQUE([TC_Value])

    • X adj=AVG([X])+([TC_Country Rank]*[Distance])

    通过TC_Country Rank给Country排序,根据排序值来计算X的相对位置,这样几个国家的图形就可以在一个维度内了。

    下面就只需要把上面已经做好的图,列功能区的[Country]和[X]换成[X adj],计算依据选择Country。

    有兴趣的同学也可以到我的Public上下载已经完成的文件。

    Public地址:https://public.tableau.com/profile/jiangbin#!/vizhome/POWERFUNCTIONBARCHARTS/1_1

    此篇文章已发布到我的公众号:saodisir,有兴趣也可关注一下

    相关文章

      网友评论

        本文标题:用Tableau画幂函数柱状图

        本文链接:https://www.haomeiwen.com/subject/ssypwctx.html