如果我使用 ReportLab(版本 3.2.0)以厘米或英寸设置绘制两个 PDF 文件,我会得到两个不同的 PDF。
我有两个在我看来完全相等的函数。在一个中,我将文本放置在位置 (5.0*inch, 10.0*inch) 中,在另一个中,我将它们放置在 (5.0*2.54*cm, 10.0*2.54*cm) 中。显然,我使用 2.54 将长度从英寸转换为厘米。
问题是文本被放置在不同的位置。我是否遗漏了什么,这是一个错误还是发生了什么事?
下面我添加了复制我的问题的代码以及两个结果的图片。
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch, cm
from reportlab.lib.pagesizes import A4
def cm_test():
c = canvas.Canvas("inch.pdf", pagesize=A4)
c.translate(inch, inch)
text_object = c.beginText(5.0*inch, 10.0*inch)
text_object.textLine("INCH: text located here")
c.drawText(text_object)
c.save()
def inch_test():
c = canvas.Canvas("cm.pdf", pagesize=A4)
c.translate(cm, cm)
text_object = c.beginText(5.0*2.54*cm, 10.0*2.54*cm)
text_object.textLine("CM: text located here")
c.drawText(text_object)
c.save()
if __name__ == "__main__":
cm_test()
inch_test()
Run Code Online (Sandbox Code Playgroud)
我有关于Pandas DataFrame中变量的对数返回的数据。我想将这些收益转换为从100(或任何任意数字)开始的索引时间序列。例如,在创建通胀指数或比较两个不同幅度的序列时,这种操作非常普遍:
因此,例如2000年1月1日的第一个值设置为100,而2000年1月2日的下一个值设置为100 * exp(return_2000_01_02),依此类推。下面的例子:
我知道我可以使用.iteritems()遍历 Pandas DataFrame中的行,如下面的SO问题所示: 遍历迭代
我也知道我可以将DataFrame转换为numpy数组,遍历该数组中的值,然后将numpy数组转换回Pandas DataFrame。该.as_matrix()方法,在此说明: http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.Series.html
一种更简单的方法是使用Pandas索引中记录的Python和numpy 索引运算符[]来对行进行迭代:http : //pandas.pydata.org/pandas-docs/stable/indexing.html
问题在于,所有这些解决方案(迭代项目除外)都在“ Pandas之外”工作,并且据我所读,效率低下。
有没有一种方法可以使用纯熊猫创建索引时间序列?如果没有,请建议最有效的方法。找到解决方案非常困难,因为索引和索引在Pandas中有特定的含义,但我这次不知道了。
我可以向你展示比我无法解释的更好:
我使用 seaborn 绘制了两个时间序列的联合图,但我想更改密度的比例,以便可以看到更多的联合分布。
这是出来的:
g = sns.jointplot(x1, x2, kind="kde", ratio=5, size=7, space=0)
Run Code Online (Sandbox Code Playgroud)
图1:两个时间序列的seaborn联合图:

但是当我将观察结果叠加在联合图的顶部时,我可以看到在彩色区域之外有很多观察结果。我使用 g.plot_joint 来叠加散点图:
g.plot_joint(plt.scatter, c="k", s=10, linewidth=1, marker="+")
Run Code Online (Sandbox Code Playgroud)
图2:散点图叠加的联合图

有没有办法以某种方式调整联合图以显示更大的分布区域?即使在关节分布不那么密集的区域,我也希望看到一些着色。
我有一个运行 Android Things 的 Raspberry Pi 3。为简单起见,假设它仅旋转步进电机。
为了再次简化事情,步进电机通过逐个线圈地告诉哪些线圈充电和哪些不充电来旋转。在 Raspberry Pi 中,您将四个输出引脚连接到步进电机的四个输入引脚。然后,您按连续顺序逐个启动引脚,每次运行之间间隔几毫秒。
如果我通过按停止“MainActivity”来停止 Android Studio 中的程序,程序代码将被终止,但 Raspberry Pi 中的输出引脚仍保持充电状态。就我而言,如果我在 Android Studio 中停止该程序,我的一个步进电机线圈仍然带电(并变得过热)。
问题:在程序关闭之前在 Android 中进行清理的最佳方法是什么?
我尝试过 onDestroy() 和 onPause() 但都不能保证在程序关闭时调用它们。(他们也从未在我的情况下工作过)。
我还尝试添加关闭挂钩,但即使这样也不会关闭输出引脚。shutdownhook 位于 MainActivity 的 onCreate() 方法中,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Runtime.getRuntime().addShutdownHook(new Thread(){
@Override
public void run(){
try{
mRobotics.stopMotor();
} catch (Exception e){
// Ignore error
}
}
});
// onCreate continues...
Run Code Online (Sandbox Code Playgroud)
stopMotor() 方法如下所示:
public void stopMotor(){
this.motorHandler.removeCallbacksAndMessages(null);
try {
mStepper1.setValue(false);
mStepper2.setValue(false);
mStepper3.setValue(false);
mStepper4.setValue(false);
} catch (Exception e){
// …Run Code Online (Sandbox Code Playgroud)