我正在尝试使用与Vincent中的格式类似的格式在Vega tutorial中创建数据数组。
...
"data": [
{
"name": "table",
"values": [
{"x":"A", "y":28}, {"x":"B", "y":55}, {"x":"C", "y":43},
{"x":"D", "y":91}, {"x":"E", "y":81}, {"x":"F", "y":53},
{"x":"G", "y":19}, {"x":"H", "y":87}, {"x":"I", "y":52}
]
}
],
...
但是,我还没弄明白该怎么做。使用Data.from_iter()和Data.from_mult_iter()要求数据具有显式索引和列名。我认为data.keypairs()看起来很有前途,但这也产生了截然不同的格式。
到目前为止,有几次尝试:
In [1]: coor = {'x': ['A', 'B', 'C'], 'y': [28, 55, 43]}
In [2]: data = Data.keypairs(coor)
In [3]: print data.to_json()
{
"name": "table",
"values": [
{ "x": "x", "y": ["A","B","C"]},
{ "x": "y", "y": [28,55,43]}
]
}
In [4]: data = Data.from_iter(coor)
In [5]: print data.to_json()
{
"name": "table",
"values": [
{"col": "data", "idx": "x", "val": ["A", "B", "C"]},
{"col": "data", "idx": "y", "val": [28, 55, 43]}
]
}
In [5]: coor = [{'x':'A', 'y':28}, {'x':'B', 'y':55}, {'x':'C', 'y':43}]
In [6]: data = Data.keypairs(coor)
In [7]: print data.to_json()
{
"name": "table",
"values": [
{"x": 0, "y": {"x": "A", "y": 28}},
{"x": 1, "y": {"x": "B", "y": 55}},
{"x": 2, "y": {"x": "C", "y": 43}}
]
}
In [8]: data = Data.from_iter(coor)
In [9]: print data.to_json()
{
"name": "table",
"values": [
{"col": "data", "idx": 0, "val": {"x": "A", "y": 28}},
{"col": "data", "idx": 1, "val": {"x": "B", "y": 55}},
{"col": "data", "idx": 2, "val": {"x": "C", "y": 43}}
]
}
有谁知道如何使用Vincent制作上述格式?如果我想要具有三个键/值对的对象,例如:
,该怎么办?...
"data": [
{
"name": "table",
"values": [
{"x":"A", "y":28, "z":34}, {"x":"B", "y":55, "z":21}, ...
]
}
],
...
非常感谢你的帮助!
答案 0 :(得分:0)
使用pandas
时,使用vincent
路线会有所回报。
In [1]: import pandas
In [2]: coor = {'x': ['A', 'B', 'C'], 'y': [28, 55, 43]}
In [3]: df = pandas.DataFrame(coor)
In [4]: df
Out[4]:
x y
0 A 28
1 B 55
2 C 43
[3 rows x 2 columns]
In [5]: import vincent
In [6]: bar = vincent.Bar(df)
In [7]: print bar.to_json()
{
"axes": [
{
"scale": "x",
"type": "x"
},
{
"scale": "y",
"type": "y"
}
],
"data": [
{
"name": "table",
"values": [
{
"col": "x",
"idx": 0,
"val": "A"
},
{
"col": "y",
"idx": 0,
"val": 28
},
{
"col": "x",
"idx": 1,
"val": "B"
},
{
"col": "y",
"idx": 1,
"val": 55
},
{
"col": "x",
"idx": 2,
"val": "C"
},
{
"col": "y",
"idx": 2,
"val": 43
}
]
},
{
"name": "stats",
"source": "table",
"transform": [
{
"keys": [
"data.idx"
],
"type": "facet"
},
{
"type": "stats",
"value": "data.val"
}
]
}
],
"height": 500,
"legends": [],
"marks": [
{
"from": {
"data": "table",
"transform": [
{
"keys": [
"data.col"
],
"type": "facet"
},
{
"height": "data.val",
"point": "data.idx",
"type": "stack"
}
]
},
"marks": [
{
"properties": {
"enter": {
"fill": {
"field": "data.col",
"scale": "color"
},
"width": {
"band": true,
"offset": -1,
"scale": "x"
},
"x": {
"field": "data.idx",
"scale": "x"
},
"y": {
"field": "y",
"scale": "y"
},
"y2": {
"field": "y2",
"scale": "y"
}
}
},
"type": "rect"
}
],
"type": "group"
}
],
"padding": "auto",
"scales": [
{
"domain": {
"data": "table",
"field": "data.idx"
},
"name": "x",
"range": "width",
"type": "ordinal",
"zero": false
},
{
"domain": {
"data": "stats",
"field": "sum"
},
"name": "y",
"nice": true,
"range": "height"
},
{
"domain": {
"data": "table",
"field": "data.col"
},
"name": "color",
"range": "category20",
"type": "ordinal"
}
],
"width": 960
}
添加更多列然后变得如此简单:
df["z"] = [1, 2, 3]