轉(zhuǎn)+:BizCharts使用采坑教程

了不起的BizCharts

最近項(xiàng)目的管理后臺都在用阿里粑粑開源的管理框架Ant Design Pro拒逮,說真話硕噩,還是比較好用的。該框架內(nèi)部也封裝了一些圖標(biāo)插件躯肌,但是在最近的一個(gè)項(xiàng)目中發(fā)現(xiàn)者春,這些圖標(biāo)可定制性還是差了點(diǎn),不能滿足客戶需求清女。

好在它的后面也介紹了自己親生的BizChart可視化圖表組件钱烟,因?yàn)槎ㄖ菩员容^高,但是api中的介紹又不是每個(gè)都有例子,更沒有組合使用的例子拴袭,經(jīng)過度娘介紹读第,發(fā)現(xiàn)這片文章備受我青睞,我怕作者哪天不高興放棄了拥刻,所以轉(zhuǎn)存了一份怜瞒,順便把自己實(shí)踐到的補(bǔ)充到后面。

原文

作為一個(gè)前端打字員般哼,除了綠茶婊之外吴汪,最討厭的就是圖表:一個(gè)讓我傷心,一個(gè)讓我難過蒸眠;比這更討厭的就是文檔寫得不清不楚的圖表庫(大概率是九年義務(wù)教育期間沒有學(xué)好語文)漾橙,讓我又愛又恨!所以本篇博文會(huì)比較枯燥黔宛,只簡單描述一下使用BizCharts的過程近刘,當(dāng)然,重要的是總結(jié)遇到的坑(遵從一個(gè)坑不踩兩次臀晃,一個(gè)女生不泡兩次原則)觉渴。

By the way,提到BizCharts徽惋,讓我們感謝一下阿里巴巴:其開源了這個(gè)好用的(雖然偶爾不那么好用案淋,還偶得挺經(jīng)常的)的react圖表庫供大家使用,對使用react技術(shù)棧的前端打字員來說簡直就是福音险绘。本文不會(huì)有過多的api解釋踢京,具體的接口可以看官網(wǎng)文檔鬼門關(guān)。

正經(jīng)篇幅

剛開始宦棺,視覺設(shè)計(jì)師哄我說:“我的要求并不高瓣距,待我從前一樣好”,啊呸代咸,說錯(cuò)了蹈丸,“我的要求是:只要能把數(shù)據(jù)用直方圖展現(xiàn)出來就好了”,so easy

// 引入相關(guān)的組件
import { Chart, Axis, Tooltip, Geom } from 'bizcharts';

// 隨便mock一下數(shù)據(jù)
const str = ['we', 'are', 'the', 'black', 'gold', 'team'];
const mockData = () => {
    let result = [];

    for (let i = 0, len = 6; i < len; i++) {
        result.push({
            xAxis: ticks[i],
            yAxis: Math.floor(Math.random() * 100)
        });
    }

    return result;
};

// 圖表組件
<Chart
    width={ 600 }
    height={ 400 }
    data={ mockData() }
>
    {/* x軸呐芥,橫軸逻杖,以data數(shù)據(jù)的xAxis屬性值為柱子的值 */}
    <Axis name="xAxis" />
    {/* y軸,縱軸思瘟,以data數(shù)據(jù)的yAxis屬性值為柱子的值 */}
    <Axis name="yAxis" />
    {/* 鼠標(biāo)hover直方圖柱子的時(shí)候荸百,tooltip顯示的值 */}
    <Tooltip />
    {/* 幾何標(biāo)記對象,主要用以描述你要畫的是什么圖形(直方圖滨攻、折線圖够话、餅狀圖蓝翰、區(qū)域圖):interval是直方圖 */}
    <Geom
        type="interval"
        position="xAxis*yAxis"
    />
</Chart>

一波操作猛如狗,讓視覺設(shè)計(jì)師看看效果:

數(shù)據(jù)可視化女嘲,BizCharts圖表庫入坑歷程

note:此直方圖每一根柱子都是單點(diǎn)的霎箍,也就是其反映了某個(gè)橫坐標(biāo)點(diǎn)的數(shù)據(jù)情況。加入我們需要一個(gè)連續(xù)區(qū)間柱子澡为,那么作為xAxis的數(shù)據(jù)字段值應(yīng)該為一個(gè)數(shù)組漂坏,包含兩個(gè)元素,表明區(qū)間的起始值媒至。

const mockData = () => {
        let result = [];

        for (let i = 0, len = 6; i < len; i++) {
            result.push({
                xAxis: [i + 0.01, i + 1 - 0.01], // 如果不加減0.01顶别,那么第一根柱子的終點(diǎn)跟第二根柱子的起點(diǎn)是同一個(gè),會(huì)感覺兩個(gè)柱子粘在一起
                yAxis: Math.floor(Math.random() * 100)
            });
        }

        return result;
    };
BizChart2.jpg

視覺設(shè)計(jì)師:“emmmmmm拒啰,圖表長寬定死了會(huì)不會(huì)有點(diǎn)僵硬啊驯绎,高度可以寫死,寬度總得來個(gè)自適應(yīng)吧谋旦?”

“毛悶臺”

<Chart
        height={ 400 }
        data={ mockData() }
        forceFit // 我媽說了(guanfang wendang shuode)剩失,加上這個(gè)屬性就可以使圖表寬度自適應(yīng)了,隔壁echart同學(xué)要學(xué)習(xí)一下
    >
</Chart>

效果秀一波

數(shù)據(jù)可視化册着,BizCharts圖表庫入坑歷程

視覺(蜜汁微笑):“猿子拴孤,你這玩意有bug啊”

“胡說,你這傻*不會(huì)用吧”

(理直氣壯)“哼哼甲捏,放大窗口圖表寬度確實(shí)會(huì)自適應(yīng)演熟,但是縮小就掛掉了(并不自適應(yīng)),ahhhhhh”

(諂媚)“討厭司顿,再給我兩分鐘~~讓我把bug結(jié)成冰芒粹。。大溜』幔”

note: 實(shí)驗(yàn)表明,如果Chart組件的父組件Father采用flex布局钦奋,即Father使用flex自適應(yīng)寬度座云,那么就會(huì)出現(xiàn)上述的問題;所以锨苏,如果有多個(gè)圖表同行并列布局疙教,請不要使用flex布局棺聊,給Father組件的寬度設(shè)置為百分比吧伞租,此時(shí)的forceFit就會(huì)起作用了。同時(shí)限佩,BizCharts對重繪設(shè)置了防抖葵诈,只有當(dāng)停止縮放的時(shí)候才會(huì)重繪裸弦。

數(shù)據(jù)可視化,BizCharts圖表庫入坑歷程

(屌到飛起)“over作喘,拿去用吧”

(一臉鄙視)“哇喔~好棒棒呀理疙,敢不敢讓我調(diào)一點(diǎn)點(diǎn)小細(xì)節(jié),我保證就一點(diǎn)點(diǎn)泞坦!”

“Come on baby窖贤!”

  1. 鼠標(biāo)hover柱子的時(shí)候,為什么柱子后面有個(gè)很丑的方框贰锁,換個(gè)顏色吧赃梧!
  2. 鼠標(biāo)hover柱子的時(shí)候,出現(xiàn)的tooltip樣式丑爆了豌熄,待會(huì)我給你設(shè)計(jì)一個(gè)吧
  3. 鼠標(biāo)hover柱子的時(shí)候授嘀,柱子的顏色應(yīng)該有所改變,對用戶比較友好B嘞铡L阒濉!
  4. ...哎芯肤,你別拿刀啊~~~

把視覺殺了之后巷折,需求還是要做的,先解決死者的第一個(gè)遺愿崖咨。

Tooltip組件提供了一個(gè)屬性crosshairs盔几,用以設(shè)置tooltip的輔助線和輔助框;默認(rèn)情況下掩幢,此屬性會(huì)為’line’逊拍、‘a(chǎn)rea’、‘path’际邻、‘a(chǎn)reaStack’類型的Geom組件開啟垂直輔助線芯丧、為‘interval’類型的Geom組件展示矩形背景框。死者說的很丑的方框就是這個(gè)世曾!

<Tooltip crosshairs={ false }/>

好的缨恒,把框去掉了!咦轮听,我們不是說要修改它的顏色嗎骗露?好的,改一下

<Tooltip
        crosshairs={{
            type: "rect" // 可選值:rect血巍、x萧锉、y、cross述寡,分別對應(yīng)輔助狂柿隙、平行x軸輔助線叶洞、平行y軸輔助線,十字輔助線
            style: {
                fill: 'red', // 輔助框顏色
                shadowColor: 'red', // 輔助框周邊陰影的顏色
                shadowBlur: 1, // 輔助框周邊陰影的透明度
                opacity: 0 // 輔助框的透明度
            }
        }}
    />
數(shù)據(jù)可視化禀崖,BizCharts圖表庫入坑歷程

note:假如開啟的是輔助線衩辟,即type不是“rect”,那么上述的樣式定義將不起作用波附。究其原因艺晴,看了此組件的源碼之后才發(fā)現(xiàn),描述輔助線樣式的屬性不是style對象掸屡,而是lineStyle對象财饥,官方文檔并未說明這一點(diǎn)。

<Tooltip
        crosshairs={{
            type: "y"
            lineStyle: {
                stroke: 'red', // 輔助線顏色
                lineWidth: 4, // 輔助線寬度折晦,單位為px
                opacity: 1 // 輔助線透明度
            }
        }}
    />
復(fù)制代碼
數(shù)據(jù)可視化钥星,BizCharts圖表庫入坑歷程

看起來還是很容易就實(shí)現(xiàn)了死者的第一個(gè)遺愿,就這樣懟死了視覺满着,是不是太殘忍了點(diǎn)谦炒?事已至此,繼續(xù)實(shí)現(xiàn)他的遺愿吧风喇。

第二個(gè)遺愿是給tooltip換個(gè)樣式宁改。既然要修改tooltip的樣式,就應(yīng)該繼續(xù)對Tooltip組件下手魂莫。通過閱讀文檔还蹲,發(fā)現(xiàn)其還有一個(gè)itemTpl的屬性,也就是可以通過這個(gè)屬性定義tooltip的模板

// 定義一個(gè)模板
    // name-value是相關(guān)柱子的key-value值
    const tooltipsDisplayTpl = `
        <p class="chart-tooptip">
            <span class="chart-tooptip-right">{name}</span>
            <span>{value}</span>
        </p>
    `;

    /*
        // 重寫tooltip元素的樣式
        // 因?yàn)橐曈X已死耙考,樣式是隨便搞的谜喊,就弄點(diǎn)黑色背景當(dāng)默哀一下吧
        .g2-tooltip {
            background-color: rgba(44, 49, 68, 0.80) !important;
        }

        .chart-tooptip {
            margin: 0;
            color: white;
        }

        .chart-tooptip-right {
            margin-right: 12px;
        }
    */

    <Tooltip
        crosshairs={ false }
        itemTpl={ tooltipsDisplayTpl }
        showTitle={ false } // 去頭(標(biāo)題,即橫軸對應(yīng)的刻度)倦始,往往影響我顏值的不是我的身材斗遏,而是我的臉,所以不要臉了
    />
數(shù)據(jù)可視化鞋邑,BizCharts圖表庫入坑歷程

note:如果想自定義tooltip展示的內(nèi)容诵次,還需要設(shè)置Geom組件的tooltip屬性,即將數(shù)據(jù)映射到Tooltip對象上枚碗;所以此屬性值如果為false的話逾一,就不會(huì)向Tooltip組件傳遞任何數(shù)據(jù)(此時(shí)Tooltip只會(huì)顯示title);還可設(shè)置為字符串肮雨,展示字符串對應(yīng)的數(shù)據(jù)字段遵堵;But, it's not the point,重點(diǎn)在于可自定義

// 定義數(shù)據(jù)返回的格式酷含,name屬性對應(yīng)的是itemTpl里面的同名變量
    const getTooltipData = (xAxis, yAxis) => {
        return {
            name: xAxis,
            value: yAxis
        };
    }

    <Geom
        type="interval"
        position="xAxis*yAxis"
        tooltip={["xAxis*yAxis", getTooltipData]}
    />
數(shù)據(jù)可視化鄙早,BizCharts圖表庫入坑歷程

第二個(gè)遺愿也實(shí)現(xiàn)了,愧疚感也多了一點(diǎn)椅亚!最主要是寫代碼的時(shí)候老是覺得后面有人站著盯著我看限番。

說不定實(shí)現(xiàn)所有遺愿就不會(huì)有這種感覺了呢,那就繼續(xù)第三個(gè)遺愿吧:“改變鼠標(biāo)hover柱子時(shí)候柱子的顏色”呀舔,翻遍了整個(gè)文檔弥虐,發(fā)現(xiàn)沒有關(guān)于hover的接口啊媚赖!看來視覺是要死不瞑目了霜瘪,阿門。

就在我感覺到后背越發(fā)的涼颼颼的時(shí)候惧磺,我發(fā)現(xiàn)Geom組件有一個(gè)屬性active

數(shù)據(jù)可視化颖对,BizCharts圖表庫入坑歷程

文檔就真的描述了那么兩句話,也沒例子磨隘。急病亂投醫(yī)的我只能嘗試一波缤底,設(shè)置為true,得了番捂,hover柱子的時(shí)候柱子顏色改變了8鲞蟆!设预!

<Geom
        type="interval"
        position="xAxis*yAxis"
        tooltip={["xAxis*yAxis", getTooltipData]}
        active={ true }
    />
數(shù)據(jù)可視化徙歼,BizCharts圖表庫入坑歷程

那如果需要自定義鼠標(biāo)hover柱子的樣式呢?對照著Geom文檔的select屬性鳖枕,又嘗試了一遍

<Geom
        type="interval"
        position="xAxis*yAxis"
        tooltip={["xAxis*yAxis", getTooltipData]}
        style={{ cursor: 'pointer' }} //  鼠標(biāo)hover上去的時(shí)候魄梯,顯示小手手,免費(fèi)送的
        active={[
            true,
            {
                style: {
                    fill: 'black',  // 柱子顏色宾符,繼續(xù)默哀
                    shadowColor: 'red',  // 整體陰影顏色画恰,包括邊緣
                    shadowBlur: 1,  // 陰影的透明度
                    opacity: 0 // 柱子顏色透明度
                }
            }
        ]}
    />
數(shù)據(jù)可視化,BizCharts圖表庫入坑歷程

(神氣的)“狗子吸奴,別死了允扇,老子搞定啦”

“靠,我都裝死兩天了则奥,你敢不敢再慢一點(diǎn)”

“那官方文檔就寫了一行字:只可意會(huì)不可言傳考润!我天分有限,意會(huì)了比較久”

“嘚瑟读处,看糊治,又出bug了吧!你的表子一閃一閃的”

(掐著他脖子使勁晃)“那TM不是bug72铡>肌绎谦!”

數(shù)據(jù)可視化,BizCharts圖表庫入坑歷程

不過話說回來粥脚,當(dāng)數(shù)據(jù)更新時(shí)窃肠,從舊數(shù)據(jù)切換到新數(shù)據(jù),會(huì)很突兀刷允,沒有緩沖過程冤留,看著特別不舒服。我尋思著树灶,在數(shù)據(jù)更新的時(shí)候纤怒,加個(gè)動(dòng)畫唄!但是初始動(dòng)畫生效了天通,更新動(dòng)畫就不生效了(如看官們知道解決辦法泊窘,請不吝賜教)。由于趕著下班像寒,我決定使用DataSet:一個(gè)用于管理表格數(shù)據(jù)的神器州既,據(jù)說更新數(shù)據(jù)的時(shí)候,其會(huì)給我弄個(gè)動(dòng)畫(除此以外有方便地導(dǎo)入非 json 數(shù)據(jù)等等功能萝映,下文有一些例子吴叶,具體細(xì)節(jié)我沒有詳細(xì)去研究,以后學(xué)習(xí)了再分享)序臂。唔好理蚌卤,總之好犀利!

// 安裝
    // npm install @antv/data-set

    // 引入
    import DataSet from '@antv/data-set';

    // 生成一個(gè)View實(shí)例奥秆,作為類的屬性逊彭,故不要在render方法里面生成這個(gè)實(shí)例
    dv = new DataSet().createView();

    render() {
        this.dv.source(data);

        <Chart
            height={ 400 }
            data={ this.dv }
            forceFit
        ></Chart>
    }
數(shù)據(jù)可視化,BizCharts圖表庫入坑歷程

“猿子构订,6拔甓!!吃宵夜嗎悼瘾?我的”

“雖然不怎么餓囊榜,但是你請就不一樣了,go”

吃了一桶泡面后......

“猿子亥宿,你看卸勺,宵夜也吃了·······”

“你又想干嘛···············”

簡直就是飽飯思淫欲啊L潭蟆J锴蟆!

”我只是覺得柱子的顏色可以漸變會(huì)顯得我們公司的產(chǎn)品更屌一點(diǎn)“

”狗子,你扛揍不悟狱?“

(可憐兮兮)”揍完之后可以加個(gè)漸變嗎......“

”......“

”我就知道你對我最好了静浴,我給你捶背捏大腿吧~“

”滾一邊去“

<Geom
        type="interval"
        position="xAxis*yAxis"
        tooltip={["xAxis*yAxis", getTooltipData]}
        color={['xAxis', '#3DA4FF-#FFFFFF']}
    />
數(shù)據(jù)可視化,BizCharts圖表庫入坑歷程

(掐著我脖子使勁晃)”老子要的是從上往下漸變挤渐,不是從左往右漸變“

“別.....別.....掐.....我....改....改.....”

<Geom
        type="interval"
        position="xAxis*yAxis"
        tooltip={["xAxis*yAxis", getTooltipData]}
        color={['xAxis', 'l(90) 0:#3DA4FF 1:#FFFFFF']}
    />
數(shù)據(jù)可視化苹享,BizCharts圖表庫入坑歷程

note:l是指線性漸變,90是指旋轉(zhuǎn)九十度(即從上到下漸變挣菲,看官們可以多試試幾個(gè)姿勢富稻,啊呸掷邦,多試試幾個(gè)角度)

0和1標(biāo)定的色值標(biāo)明初始色值和終止色值白胀,注意一點(diǎn),色值不可以使用顏色名字抚岗,如“red”或杠、“blue”等

可添加多個(gè)漸變色值,如

color="l(90) 0:#000000 0.5:#FFFFFF 1:#000000"

note:如果是area類型的Geom宣蔚,那么第一種漸變方式是不起作用的向抢,只能選用第二種

“狗子,我真要下班了”

“那個(gè)胚委,你看都搞著漸變了挟鸠,要不搞一波顏色分類”

”沒得談,goodbye亩冬!“

”宵夜我的“

”頂你個(gè)肺艘希,又想用泡面忽悠我!9杓薄覆享!“

”擼串,騙你我是狗“

”emmmmmm.....“

既然提到顏色分類营袜,我們就接著提一下dv.transform 吧, dv.transform內(nèi)置了一些基礎(chǔ)的函數(shù):filter撒顿,map,pick荚板,rename凤壁,reverse …… 具體可自行查看文檔

只需要添加 groupBy 字段,并且在傳入的原始數(shù)據(jù)data中添加對應(yīng)的字段classify即可輕松搞定跪另。

dv.transform({
        groupBy: ['classify'],  // 以classify字段進(jìn)行分組 
    });

”猿子客扎,顏色還是要自定義的哦“

(白眼)

<Geom
        position={'xAxis*yAxis'}
        color={['classify', classify => {
            // 這里根據(jù)不同字段返回不同顏色
            return classify === 'test' ? 'red' : 'yellow';
        }]}
        style={{ cursor: 'pointer' }}
    />
數(shù)據(jù)可視化,BizCharts圖表庫入坑歷程

作為一個(gè)有責(zé)任的前端打字員罚斗,有一點(diǎn)即使設(shè)計(jì)不要求的徙鱼,我還是需要說明的,橫軸的刻度值是可以自定義的

<Axis
        name={xAxis}
        label={{
            textStyle: {
                fill: 'red',  // 顏色
                textBaseline: 'top'  // 對齊基線
            },
            formatter: (val) => {
                return `${ val }\n換行了`
            }
        }}
    /> 
數(shù)據(jù)可視化,BizCharts圖表庫入坑歷程

”狗子袱吆,擼串去Q嵫谩!绞绒!“

”要不還是吃個(gè)泡面婶希??蓬衡?喻杈?“

狗子,卒狰晚!


以下內(nèi)容來自自己的總結(jié)


很顯然筒饰,本人沒有博主這枚猿有文化底蘊(yùn),辭藻上既不華麗麗壁晒,也沒有故事性瓷们,純屬就是論事,記筆記的形式秒咐。

1. 柱狀圖/點(diǎn)圖上顯示文字及格式化內(nèi)容

該需求需要用到Label組件谬晕,她是Geon的子組件,上代碼

      <div>
        <Chart height={400} data={dv} forceFit>
          <Axis name="月份" />
          <Axis name="月均降雨量" />
          <Legend />
          <Tooltip
            crosshairs={{
              type: "y"
            }}
          />
          <Geom
            type="interval"
            position="月份*月均降雨量"
            color={"name"}
            adjust={[
              {
                type: "dodge",
                marginRatio: 1 / 32
              }
            ]}
          >
            <Label
                content={['月份*月均降雨量', (月份, 月均降雨量) => (`${月均降雨量}`)]}
                textStyle={{
                  textAlign: 'center', // 文本對齊方向携取,可取值為: start middle end
                  fill: '#404040', // 文本的顏色
                  fontSize: '14', // 文本大小
                  fontWeight: 'normal', // 文本粗細(xì)
                  rotate: 0, // 文字旋轉(zhuǎn)
                  textBaseline: 'top', // 文本基準(zhǔn)線攒钳,可取 top middle bottom,默認(rèn)為middle
                }}
              />
            </Geom>
        </Chart>
      </div>

效果:

image.png

2. 圖標(biāo)上增加日期選擇onChange

import React, { PureComponent } from 'react';
import { Chart, Geom, Axis, Tooltip, Label } from 'bizcharts';
import { DatePicker } from 'antd';
import numeral from 'numeral';
import moment from 'moment';
import style from './index.less';

class AppTotalUsers extends PureComponent {
  numeralCount = count => numeral(count).format('0,0.00');

  wanCount = count => {
    let data;
    if (count < 10000) {
      data = count;
    } else {
      data = this.numeralCount(count / 10000);
      data = `${data} 萬`;
    }
    return data;
  };

  handleSelect = value => {
    const { callback } = this.props;
    const payload = { showDate: value };
    callback(payload);
  };

  // Can not select days before today and today
  disabledDate = current => current && current > moment().endOf('day');

  const  appChartData = [
      {
          "x": "用戶中心管理",
                "y": "23715",
                "date": "2019-03-22"
            },
            {
                "x": "測試app",
                "y": "2899",
                "date": "2019-03-22"
            }
        ];

  render() {
    const { appChartData, showDate } = this.props;
    const background = {
      fill: '#FFFFFF', // 圖表背景色-白色
      fillOpacity: 0, // 圖表背景透明度
    };

    const appScale = {
      y: {
        alias: '人數(shù)',
        type: 'pow',
      },
    };

    return (
      <div style={{ height: 390 }}>
        <div style={{ padding: '20px', background: '#FFFFFF' }}>
          <Chart height={300} data={appChartData} scale={appScale} forceFit background={background}>
            <span className={style.mainTitle}>歷史累計(jì)用戶人數(shù)(人)</span>
            <DatePicker
              className={style.dateSelect}
              allowClear={false}
              onChange={this.handleSelect}
              disabledDate={this.disabledDate}
              // value={moment(appChartData[0] && appChartData[0].date, 'YYYY-MM-DD')}
              value={moment(showDate, 'YYYY-MM-DD')}
            />
            <Axis name="x" />
            <Axis name="y" visible={false} />
            <Tooltip
              crosshairs={{
                type: 'y',
                title: '人數(shù)',
              }}
            />
            <Geom type="interval" position="x*y">
              {/* 柱子上作文章用這個(gè)子組件 */}
              <Label
                content={['x*y', (x, y) => this.wanCount(`${y}`)]}
                textStyle={{
                  textAlign: 'center', // 文本對齊方向雷滋,可取值為: start middle end
                  fill: '#404040', // 文本的顏色
                  fontSize: '12', // 文本大小
                  fontWeight: 'normal', // 文本粗細(xì)
                  rotate: 0, // 文字旋轉(zhuǎn)
                  textBaseline: 'top', // 文本基準(zhǔn)線不撑,可取 top middle bottom,默認(rèn)為middle
                }}
              />
            </Geom>
          </Chart>
        </div>
      </div>
    );
  }
}

export default AppTotalUsers;

index.less文件

.chartDiv {
  padding: '0 20px';
  background-color: '#FFFFFF';
}

.mainTitle {
  font-weight: bold;
  font-size: 16px;
  padding: 10px;
}

.remark {
  font-weight: normal;
  font-size: 14px;
  padding-right: 30px;
  float: right;
}

.dateSelect {
  :global(.ant-calendar-picker-input) {
    border: none;
  }
  padding-right: 50px;
  float: right;
}

效果:


image.png

原文地址:
數(shù)據(jù)可視化惊豺,BizCharts圖表庫入坑歷程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末燎孟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子尸昧,更是在濱河造成了極大的恐慌揩页,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烹俗,死亡現(xiàn)場離奇詭異爆侣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)幢妄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門兔仰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蕉鸳,你說我怎么就攤上這事乎赴∪谭ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵榕吼,是天一觀的道長饿序。 經(jīng)常有香客問我,道長羹蚣,這世上最難降的妖魔是什么原探? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮顽素,結(jié)果婚禮上咽弦,老公的妹妹穿的比我還像新娘。我一直安慰自己胁出,他們只是感情好型型,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著划鸽,像睡著了一般输莺。 火紅的嫁衣襯著肌膚如雪戚哎。 梳的紋絲不亂的頭發(fā)上裸诽,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音型凳,去河邊找鬼丈冬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛甘畅,可吹牛的內(nèi)容都是我干的埂蕊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼疏唾,長吁一口氣:“原來是場噩夢啊……” “哼蓄氧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起槐脏,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤喉童,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后顿天,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體堂氯,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年牌废,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咽白。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸟缕,死狀恐怖晶框,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妓肢,我是刑警寧澤宪卿,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站烟瞧,受9級特大地震影響畴蒲,放射性物質(zhì)發(fā)生泄漏悠鞍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一模燥、第九天 我趴在偏房一處隱蔽的房頂上張望咖祭。 院中可真熱鬧,春花似錦蔫骂、人聲如沸么翰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浩嫌。三九已至,卻和暖如春补胚,著一層夾襖步出監(jiān)牢的瞬間码耐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工溶其, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骚腥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓瓶逃,卻偏偏與公主長得像束铭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子厢绝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Echarts總結(jié) 簡介:js圖標(biāo)庫契沫,可以兼容在pc和移動(dòng)端。Echarts底層使用canvas實(shí)現(xiàn)昔汉,支持多圖表懈万、...
    窩頭咸菜閱讀 8,185評論 0 4
  • 使用GGPLOT2包進(jìn)行數(shù)據(jù)可視化 Introduction簡介 geom_smooth可以用于散點(diǎn)圖,擬合一條直...
    一條很閑的咸魚閱讀 951評論 0 0
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫挤庇、插件钞速、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,024評論 4 62
  • 單是約見的湖,就滿是/ 我叫柳們?nèi)龀龅男? 是獨(dú)歸路上的嫡秕,夜半臺階旁的/ 多情而冗重的緒/ 它們嚎叫/ 螺旋行進(jìn)并...
    王春蠶旋臂閱讀 242評論 0 1
  • 我今天看了《怒晴湘西》的后傳《云南蟲谷》渴语,拍得實(shí)在比《怒晴湘西》差多了。故事情節(jié)簡單昆咽,拿兩段愛情來拼湊驾凶,其中一個(gè)女...
    瑤瑤_2583閱讀 1,239評論 0 0