gpt4 book ai didi

python - 使用 Vincent 创建多线图

转载 作者:行者123 更新时间:2023-11-28 20:23:36 24 4
gpt4 key购买 nike

我正在尝试使用 Vincent 创建多线图。

我有一个具有以下布局的 csv 文件:

,wk1,wk2,wk3,wk4,wk5,wk6,wk7,wk8,wk9
Tom J,97,65,82,65,101,84,79,71,83
Lisa R,95,87,95,65,61,78,93,95,56
Rich F,51,111,50,119,84,77,73,84,60
Anne E,63,68,89,70,95,80,56,75,82
Dan M,83,95,36,115,79,79,65,55,69
Mack W,67,89,72,79,47,64,113,94,33

这是我的代码:

import pandas as pd
import vincent

df = pd.read_csv('weekscores.csv', index_col=0)

lines = vincent.Line(df)
lines.axis_titles(x='WEEKS', y='SCORE')
lines.legend(title='Player')
lines.to_json('line.html',html_out=True,html_path='line_template.html')

这会运行并生成一个图表,但图表中没有显示线条:

enter image description here

使用 .grammar() 检查数据,我看到每周的分数是这样的:

{'val': 97, 'col': 'wk1', 'idx': 'Tom J'}

感谢任何帮助渲染它的帮助。

最佳答案

这里有几个问题:第一个是文森特(天真地)假设折线图将采用线性尺度,而在这种情况下我们实际上需要一个序数尺度。第二个问题是数据框需要转置以便周在索引上。因此,要获得您正在寻找的情节:

import vincent
import pandas as pd

df = pd.read_csv('weekscores.csv', index_col=0)
df = df.T
df
Out[27]:
Name Tom J Lisa R Rich F Anne E Dan M Mack W
wk1 97 95 51 63 83 67
wk2 65 87 111 68 95 89
wk3 82 95 50 89 36 72
wk4 65 65 119 70 115 79
wk5 101 61 84 95 79 47
wk6 84 78 77 80 79 64
wk7 79 93 73 56 65 113
wk8 71 95 84 75 55 94
wk9 83 56 60 82 69 33

现在我们已经翻转了数据,我们可以创建折线图,并确保 x 尺度是有序的:

lines = vincent.Line(df)
lines.scales[0].type = 'ordinal'
lines.axis_titles(x='WEEKS', y='SCORE')
lines.legend(title='Player')

你应该得到类似下面的东西:

Linechart

希望这对您有所帮助!

关于python - 使用 Vincent 创建多线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19783064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com