Code Monkey home page Code Monkey logo

data-set's People

Contributors

arcsin1 avatar dxq613 avatar elaine1234 avatar hustcc avatar jeffy2012 avatar leungwensen avatar maplor avatar shaofeizi avatar simaq avatar sunshinewyf avatar tomhuangcn avatar visiky avatar xjh22222228 avatar zhangzhonghe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

data-set's Issues

是使用 data-view 的 source 来重新设置新的数据吗?

像下面这样初始化的时候已经设置了 connector, transform:

dv.source(data, {
  type: 'topojson',
});

dv.transform({
  type: 'filter',
  callback(row) {
    return row.Run !== "1";
  }
});

如果我此时有新的 data, 可以重新使用 source 方法设置数据, 这时候会重新用原来的 transform 的来处理一遍新数据。
但是依旧需要在 souce 方法中提供 connector 配置, 这个 connector 有必要在重新传进去吗? 按我的理解是应该复用, 虽然传进去也没什么问题。

或者有什么其他用来设置新的数据的方法?

[Feature request] compile src to folder es, for referencing with package.json field 'module'

data-set version: 0.10.1


Webpack build failed with webpackConfig.resolve.mainFields = ['module', 'main'], for less bundle size via tree shaking.
But the value of field module is 'src/index.js' which would cause minifying code unsuccessfully, when using uglifyjs-webpack-plugin.


What expected is:

Compile 'src/index.js' to 'es/index.js' like 'lib/index.js', but without transforming import/export.

and package.json

{
  "module": "es/index.js",
}

or hot fix with

{
  "module": "lib/index.js",
}

data-set能否进行功能拆分?

  • Link:
  • Platform:
  • Mini Showcase(like screenshots):

我只想用一些简单的transform功能,但是要引入整个data-set包太不合理,而且data-set包不是一般的大,能够将各个功能点进行拆分,让使用者可以按需加载?

DataSet与Mobx共同使用时的问题

  • Link:

代码:

const ds = new DataSet();
const dv = ds.createView().source(dataSource);
  • Platform:

  • Mini Showcase(like screenshots):

当dataSource是一个mobx的ObservableArray时,会抛错

image

async connectors and transforms

const dv = new DataSet.view();
dv.source(src, options);
dv.transform(options).transform(options);
dv.ready((data, dv) => {
});

bin 统计的嵌套问题

  • Link:
  • Platform:
  • Mini Showcase(like screenshots):
// 直方图
chart.interval().position(Stat.summary.count(Stat.bin.rect('depth')));
// 六边形封箱
chart.polygon().position(Stat.summary.bin('x*y')).color(Stat.summary.count());
chart.polygon().position(Stat.summary.bin('x*y')).color(Stat.summary.max('z'));

Transform词云, 当size参数一个为0/null/undefined, 另一个为负数时 陷入死循环

  • Link:
  • Platform:
  • Mini Showcase(like screenshots):

例子:
let ds = [
{name: "有餐厅", value: "91"},
{name: "有吃饭的地", value: "58"},
{name: "有停车场", value: "50"},
{name: "西单边", value: "37"},
{name: "位置很好", value: "23"},
{name: "强烈推荐", value: "21"}
];

let dv = new DataSet.View().source(ds);

dv.transform({
type: 'tag-cloud',
fields: 100,
size: [0, -100],
font: 'serif',
padding: 0,
spiral: 'archimedean',
fontSize(d) { return d.value / 5 },
timeInterval: Infinity,
});

程序将在data-set/src/util/tag-cloud.js l311-l320 陷入死循环

使用transform aggregate的 sum 累加时候,小数点存在精度丢失问题

`
const dv = new DataSet().createView().source([
{
item: '2019',
columnValue: 1.01,
type: 'a'
},
{
item: '2019',
columnValue: 2.01,
type: 'a'
},
{
item: '2020',
columnValue: 1.01,
type: 'a'
},
{
item: '2020',
columnValue: 2.22,
type: 'a'
},
])
dv.transform({
type: 'aggregate', // 别名summary
fields: ['columnValue'], // 统计字段集
operations: ['sum'], // 统计操作集
as: ['value'], // 存储字段集
groupBy: ['item', 'type'], // 分组字段集
})

console.log('dv', dv.rows)
`

输出结果

image

原因

sum 使用的第三方库 simple-statistics 里面并没有处理浮点计算精度丢失问题
image
image

希望能修复这个问题,感谢

[ts] Could not find a declaration file for module '@antv/data-set'

按照官方的指引安装,并引用报错

npm install @antv/data-set;
import DataSet from '@antv/data-set';

错误信息如下:

[ts]
Could not find a declaration file for module '@antv/data-set'. '/home/likewise-open/SENSETIME/liulin/sense-radar/node_modules/@antv/data-set/build/data-set.js' implicitly has an 'any' type.
  Try `npm install @types/antv__data-set` if it exists or add a new declaration (.d.ts) file containing `declare module 'antv__data-set';`

histogram的dataset 没有进行默认的Sturges 或者其他计算

  • I have searched the issues of this repository and believe that this is not a duplicate.

Steps to reproduce

  1. 在书写g2plot测试遇到dataset的 histogram方式没有默认去处理binwidth:
    问题出处:源文件查看
  2. 业内一般处理会采用Sturges formula自动生成binWidth
Environment Info
@antv/data-set 0.11.4
System mac
Browser 谷歌84

改进方式

Sturges formula:

export function sturges(values: Array<number>): number {
  return Math.ceil(Math.log(values.length) / Math.LN2) + 1;
}

@hustcc

How to use it in Node.js?

In my opinion , data-set is used as a kind of transformation. Or, exactly, transformation is a very important part of data-set.

However, I don't think the transformation should be done in frontend of browser.
Would you please give a way to do it in Node.js , which plays as a middle proxy server in my project.

Should I operate by just taking node as browser to get it done?
Like :

  1. get data into dataview
  2. transform
  3. export dataview.rows

It's confusing reading the docs while it's not specific to node.

Looking forward to your answer.

GeoJSON 数据不支持自定义属性

function GeoJSONConnector(data, options, dataView) {
dataView.dataType = GEO;
const features = cloneDeep(data.features);
// pre-process
features.forEach(feature => {
feature.name = feature.properties.name;
feature.longitude = [];
feature.latitude = [];
const pathData = feature.pathData = geoPathGenerator(feature);
const points = getPointAtLength(pathData);
points._path.forEach(point => {
feature.longitude.push(point[1]);
feature.latitude.push(point[2]);
});
const centroid = geoPathGenerator.centroid(feature);
feature.centroidX = centroid[0];
feature.centroidY = centroid[1];
});
// dataView.origin = features;
return features;
}

dataset transform不支持Date类型

在执行transform时,dataview会把源数组clone到transform数组。但是用到的克隆算法无法正确克隆Date类型。克隆出来的数据是一个空对象。

Dateset build size is big, how to use parts of it?

  • Platform: Vue CLI 3 + ViserJS

I am using viserjs to show a single chart. I use date-set to pivot the data to an Pie Chart, like the code below.

import DataSet from "@antv/data-set";
    const dv = new DataSet.View().source(data);

    dv.transform({
      type: "percent",
      field: this.measureName,
      dimension: this.dimensionName,
      as: "percent"
    });

Is there some way to import just the transform part of the @antv/data-set lib (ex.: import {transform} from "@antv/data-set")?

After build, the size of @antv/data-set is big, but my code does not need everthing!

Screen Shot 2019-12-23 at 12 12 36

[BUG] transform 丢失字段

const dv = ds
    .createView()
    .source(rawData)
    .transform({
      type: 'map',
      callback(row) {
        sumRealityDaily += row['实际每日达成'];
        sumPredictionDaily += row['预计每日达成'];
        if (Number(row['日期']) < 4.6) {
          row['汇总实际每日达成'] = sumRealityDaily;
        } else {
          row['汇总预计每日达成'] = sumPredictionDaily;
        }
        return row;
      },
    })
    .transform({
      type: 'fold',
      fields: ['实际每日达成', '预计每日达成'], // 展开字段集
      key: 'type', // key字段
      value: 'value', // value字段
    });

最后一个transform转换完丢失 '汇总预计每日达成' 字段

lib目录下存在ES6语法

按照项目package.json中的配置,lib目录下应该是存放babel编译之后的代码,但是发现其中依然存在ES6语法:
view.js

class View extends EventEmitter {
...
}

data-set.js

class DataSet extends EventEmitter {
...
}

一般我们在进行项目webpack打包的时候习惯将node_modules下的文件exclude,因此希望能够提供的lib目录下不要出现ES6语法。

kde transform 当 dw(步长) 为 0 时会无限循环,出现卡死

  • Link:
  • Platform:
  • Mini Showcase(like screenshots):

kde 中有一行:

 const seriesValues = getSeriesValues(extent, options.step ? options.step : bw);

getSeriesValues 源码如下:

module.exports = (extent, bandwidth = 1) => {
  const [ min, max ] = extent;
  const values = [];
  let tmp = min;
  while (tmp < max) {
    values.push(tmp);
    tmp += bandwidth;
  }
  values.push(max);
  return values;
};

当 bandwidth 是0 ,max 又很大的时候,会出现无限循环

离线状态下,无法正常显示图表组件。

  • Link:
  • Platform:
  • Mini Showcase(like screenshots):

复现步骤:
已经安装好npm包,使用时也引入了组价,离线状态下,无法显示图表组件。

npm install @antv/data-set;
import DataSet from '@antv/data-set';

这是因为我使用了typescript的原因吗?在线情况下注释掉

<!-- 引入在线资源 -->
<script src="https://gw.alipayobjects.com/os/antv/pkg/_antv.data-set-0.9.6/dist/data-set.min.js"></script>

也无法使用图表组件,按理说我已经安装了离线包应该不需要再引入在线资源了。

错误日志:
[ts]

无法找到模块“@antv/data-set”的声明文件。“c:/Users/william/Documents/sky-data-backend/node_modules/@antv/data-set/build/data-set.js”隐式拥有 "any" 类型。
  Try `npm install @types/antv__data-set` if it exists or add a new declaration (.d.ts) file containing `declare module '@antv/data-set';`
module "c:/Users/william/Documents/sky-data-backend/node_modules/@antv/data-set/build/data-set"

离线状态下一直显示loading。

Bug: data-set 连续两次改变不同状态量,后一次状态改变会把前一次的改变取消。

我在dataset里面有两个data view: timev 和 timev2.

  • timev 关注的状态量为['start','timev']
  • timev2 关注的状态量为['start','timev2']
    在为两个view初始填入数据时,会改变view名字对应的状态以触发view重新run transform
//该代码只会触发timev2的刷新
this.timeSource.addViewData('timev',data)
 this.timeSource.addViewData('timev2',data1)
// 拉开两次设置数据的时间,则两个view都能够刷新
setTimeout(()=>{
      this.timeSource.addViewData('timev',data)
    },100)
    setTimeout(()=>{
      this.timeSource.addViewData('timev2',data1)
    },500)
  • Link:
  • Platform:
  • Mini Showcase(like screenshots):

韦恩图需求

需求背景:业务上重合度分析时,需要通过venn图来表达
需求内容:
g2上增加venn图模块,具体具体需求点如下:
1.需求支持2组,3组,4组,5组.....n组的数据展示
image

2.每一组的数据颜色可调(相交部分不需要调整,按自然颜色重叠来)
3.每一块数据的面积大小可表达给出的数值大小(比例不用太精确,可表达数值间的比较意图即可),但可能出现极大值和极小值,导致极小值看不见的情况,需要有上下限
4.图形区域上展示数字,如展示不下的,通过连线方式指引,展示到空白区域
5.在空白处,可选择是否展示每组数据的总和数字
需求样例(以3组数据为例):
image
image

如何正确的移除 transform ?

关于 data-view 的 transform 我只看到了如何添加, 以及获取, 但并没有看到如何移除的办法 。

看了源码,发现只能直接操作 transform 的数组, 但是这样带来的问题是, 数据并没有重新转换

源码中有重新执行的方法 _reExecuteTransforms, 但是这个应该是私有方法吧

所以如何保证移除 tranform 后, 获取的处理数据为剩余的 transform 处理后的数据呢? 或者说你们并不推荐这种用法?

[feature request]pick 字段过滤增加反向过滤功能

*Link:

Transform 数据转换 · pick 字段过滤

dv.transform({
  type: 'pick',
  fields: [ 'xxx', 'yyy' ] // 决定保留哪些字段,如果不传,则返回所有字段
});

能不能再加个反向的逻辑, 即, 决定不保留哪些字段? 看了下源码, 没太看懂怎么加....

如果如下简单凑合也是能用的, 但这种, 不能 dv.transform...transform...transform...而且可能还有其他问题

fields: Object.keys(dv.rows[0]).filter(f=> !['zzz', 'aaa'].includes(f))
  • Platform:
  • Mini Showcase(like screenshots):

Yarn应该如何安装@antv/data-set依赖?

Yarn Version: 1.0.0

我在create-react-app脚手架下想使用data-set,但是使用yarn add @antv/data-set命令安装时报错:
image

如果去掉@AntV的话就会去安装重名包[email protected]
我查询了yarn中文官网提供的add参数:
image

发现可能安装的好像只有yarn add <git remote url>方式
但是我通过这种方式总是会卡死在Resolving Packages
image

我想请问一下是不是用yarn安装的话只能通过git remote url的方式呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.