小编Cha*_*les的帖子

通过循环和函数填充matplotlib子图

我需要通过循环迭代绘制一个图的子图; 每次迭代都会调用另一个模块(=另一个py文件)中定义的函数,该函数会绘制一对子图.这是我尝试过的 - 唉不起作用:

1)在循环之前,创建一个具有足够行数和2列的图形:

 import matplotlib.pyplot as plt     
 fig, axarr = plt.subplots(nber_rows,2)
Run Code Online (Sandbox Code Playgroud)

2)在循环内部,在迭代编号iter_nber中,调用绘制每个子图的函数:

 fig, axarr = module.graph_function(fig,axarr,iter_nber,some_parameters, some_data)
Run Code Online (Sandbox Code Playgroud)

3)有问题的功能基本上是这样的; 每次迭代在同一行上创建一对子图:

 def graph_function(fig,axarr,iter_nber,some_parameters, some_data):

     axarr[iter_nber,1].plot(--some plotting 1--)
     axarr[iter_nber,2].plot(--some plotting 2--)

     return fig,axarr
Run Code Online (Sandbox Code Playgroud)

这不起作用.我在循环结束时得到一个空数字.我已经尝试了上面的各种组合,比如只在函数的返回参数中留下axarr,但无济于事.显然我不明白这个图及其子图的逻辑.

任何建议非常感谢.

python matplotlib subplot

9
推荐指数
1
解决办法
2万
查看次数

使用XlsxWriter将pandas图表插入Excel文件

我使用python 3.4,pandas 0.14.1和XlsxWriter 0.5.6.我使用pandas创建了一个名为'graph'的图形,其代码如下

 graph=data_iter['_DiffPrice'].hist() 
Run Code Online (Sandbox Code Playgroud)

,它产生一个美丽的直方图.

现在,如何使用XlsxWriter将该图形插入Excel文件?

我尝试了XlsxWriter方法

workbook.add_chart()
Run Code Online (Sandbox Code Playgroud)

但这会在Excel中创建一个图形,而不是我想要的图形.

谢谢

python pandas xlsxwriter

7
推荐指数
1
解决办法
1万
查看次数

停止Scipy在设定时间后最小化

我在Python 3.4上使用Scipy模块的最小化,特别是:

resultats=minimize(margin_rate, iniprices, method='SLSQP',
jac=margin_rate_deriv, bounds=pricebounds, options={'disp': True,
'maxiter':2000}, callback=iter_report_margin_rate)
Run Code Online (Sandbox Code Playgroud)

可以设置最大迭代次数(如上所述),但有没有办法告诉最小化在给定的设定时间后停止搜索解决方案?我查看了最小化的一般选项以及SLSQP求解器的特定选项,但无法解决.

谢谢

python scipy

6
推荐指数
2
解决办法
2550
查看次数

当只有一级索引用作键时,pandas 与 MultiIndex 合并

我有一个名为 df1 的数据框,带有 2 级 MultiIndex(级别:'_Date' 和 _'ItemId')。'_ItemId' 的每个值都有多个实例,如下所示:

                              _SomeOtherLabel
 _Date            _ItemId     
 2014-10-05       6588921     AA
                  6592520     AB 
                  6836143     BA
 2014-10-11       6588921     CA
                  6592520     CB
                  6836143     DA 
Run Code Online (Sandbox Code Playgroud)

我有一个名为 df2 的第二个数据框,其中 '_ItemId' 用作键(不是索引)。在这个 df 中,_ItemId 的每个值只出现一次:

                  _ItemId       _Cat
  0               6588921       6_1
  1               6592520       6_1
  2               6836143       7_1
Run Code Online (Sandbox Code Playgroud)

我想从 df2 中恢复“_Cat”列中的值,并将它们合并到 df1 中以获取“_ItemId”的适当值。这几乎是(我认为?)标准的多对一合并,除了左侧 df 的适当键是 MultiIndex 级别之一。我试过这个:

df1['_cat']=pd.merge(df1,df2,left_index=True, right_on='ItemId')  
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

   "ValueError: len(right_on) must equal the number of levels in the index of "left"
Run Code Online (Sandbox Code Playgroud)

我认为这是有道理的,因为我的(左)索引实际上是由两个键组成的。如何选择我需要的一个索引级别?或者有没有更好的方法来合并?

谢谢

python merge multi-index pandas

6
推荐指数
1
解决办法
3814
查看次数

标签 统计

python ×4

pandas ×2

matplotlib ×1

merge ×1

multi-index ×1

scipy ×1

subplot ×1

xlsxwriter ×1