我已经创建了一个python函数来使用plotly绘制小提琴图。代码是:
def print_violin_plot(data1,data2,type1,type2,fig_title):
data = pd.DataFrame(columns=('Group', 'Number'))
for i in data1:
x = pd.DataFrame({'Group' : [type1],
'Number' : [i],})
data = data.append(x, ignore_index=True)
for i in data2:
x = pd.DataFrame({'Group' : [type2],
'Number' : [i],})
data = data.append(x, ignore_index=True)
fig = FF.create_violin(data, data_header='Number',
group_header='Group', height=500, width=800, title= fig_title)
py.iplot(fig, filename="fig_title")
然后我调用函数
print_violin_plot(eng_t['grade'],noneng_t['grade'],'English
Speaking','Non-English Speaking', 'Grades')
该函数运行正常,没有任何错误,但我没有看到任何输出。为什么呢?
答案 0 :(得分:0)
当您循环data1
和data2
时,您将pd.DataFrame
的新实例分配给变量x
,并在每次迭代时覆盖x
。如果要追加pd.DataFrame
的实例,则应将data.append(x)移动到for循环。此外,data.append()
返回None,这是处理data
对象的方法,因此data = data.append(..)
会生成data == None
。您的代码应如下所示
data = pd.DataFrame(columns=('Group', 'Number'))
for i in data1:
x = pd.DataFrame({'Group' : [type1],
'Number' : [i],})
for i in data2:
x = pd.DataFrame({'Group' : [type2],
'Number' : [i],})
data.append(x, ignore_index=True)
要说清楚,我必须说我不知道pg.DataFrame
的含义或含义,但我上面写的内容肯定是代码中的一个缺陷。我假设pg.DataFrame
个实例支持append
方法并且工作方式与lists
类似。