小编oli*_*ier的帖子

AxesSubplot实例的属性

我正在尝试了解matplotlib API。我看过很多这样的例子:

...
fig, (ax0, ax1) = plt.subplots(nrows=2)
ax1.spines['right'].set_visible(False)
...
ax1.xaxis.set_ticks_position('bottom')
...
Run Code Online (Sandbox Code Playgroud)

(完整示例:http : //matplotlib.org/examples/ticks_and_spines/spines_demo.html

我了解它的作用,但无法在API中找到用于检索xaxis和刺的ax0和ax1的刺和xaxis属性(尽管有文献记载的get_xaxis()方法,但刺没有)。当然,现在我知道该特定情况,但是还有其他隐藏属性吗?还是我没有正确阅读文档?这些属性从何而来?也许他们被添加了fig.subbplots吗?我想要一个基本的matplotlib对象的所有公共属性的列表。我真的必须求助于dirpython内置函数并从名称中猜测其含义吗?

matplotlib

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

Python 何时计算函数定义中的变量

我很困惑 Python 什么时候计算变量。例如,如果我这样做:

p=4
def g():
    return p
p=5
print g()
Run Code Online (Sandbox Code Playgroud)

我得到 5,所以在 的定义中g,变量p保持未计算。当我们调用时它被评估g

但是,如果我这样做:

def make_fun():
    p=5
    def f():
        return p
    return f

f=make_fun()
p=6
print f()
Run Code Online (Sandbox Code Playgroud)

我得到 5. 为什么不f包含未评估的变量p?我想清楚地了解变量的评估何时发生。

python variables scope

5
推荐指数
1
解决办法
1275
查看次数

添加自定义刻度和标签

我想在matplotlib中添加自定义主要标记和标签.典型的用途是在带有标签的位置添加math.pi标签"$\pi$".我的目标是保留其他刻度:我希望保留原始的主要和次要刻度,使用之前选择的格式,但使用此额外的刻度和标签.我已经找到了一种方法(并在这些论坛上找到了帖子)来添加勾号:

list_loc=list(ax.xaxis.get_majorticklocs())
list_loc.append(pos)
list_loc.sort()
ax.xaxis.set_ticks(list_loc)
Run Code Online (Sandbox Code Playgroud)

我的麻烦在于标签.我试图以类似的方式检索标签,ax.xaxis.get_majorticklabels()但这给了我一个matplotlib.text.Text我不确定如何处理的列表.我的目的是将标签列表作为字符串,添加新标签(在正确的位置),然后ax.xaxis.set_ticklabels(list_label)以类似于位置的方式使用.

python matplotlib

4
推荐指数
2
解决办法
3541
查看次数

不添加不必要极值的插值方法

这个问题既是编程的一半,也是数学的一半。我想通过一条曲线对点集进行插值,而又不添加不必要的极值,而这些极值保持“接近线性插值”,同时保持一条看起来平滑的曲线。让我们看一下下面的代码和结果:

#! /usr/bin/python

import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

list_points=[(-3,0.1),(-2,0.15),(0,4),(2,-6),(4,-2),(7,-0.15),(8,-0.1)]
(xp,yp)=zip(*list_points)
fun=interp1d(xp,yp,kind='cubic')

xc=np.linspace(min(xp),max(xp),300)

plt.plot(xp,yp,'o',color='black',ms=5)
plt.plot(xc,fun(xc))
fun2=interp1d(xp,yp,kind='linear')
plt.plot(xc,fun2(xc))

plt.show()
Run Code Online (Sandbox Code Playgroud)

插补

我本来期望只有两个极值(大约x〜0和x〜2)的插值,而这里我们有5个极值。如果我们要求他们手工绘制一条平滑曲线的点,这就是大多数人会画的图。有没有一种方法可以达到这个目的(在python中)。

更新:请注意,xfig有一些接近的地方(称为“近似样条图”),其不便之处在于曲线不能精确地通过指定点。我希望曲线能精确地通过指定的点,但是如果没有人知道更好的解决方案,我会欢迎使用xfig方法。

python matplotlib scipy

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

printf 一个未知精确类型的整数

我已经把我的代码

typedef int myinteger ;
Run Code Online (Sandbox Code Playgroud)

但是,如果我将 typedef 更改为另一种整数类型,我希望我的所有代码继续有效。

现在我想 printf 一个类型的变量myinteger。这是一种正确的方法吗?我刚刚发现了以下“黑客”:

printf("%lld", myvariable) ;
Run Code Online (Sandbox Code Playgroud)

希望任何整数类型都适合 along long并且编译器会进行正确的转换。它似乎适用于 gcc(尽管我有一个警告)。printf是一个问题,但它们也可能是其他问题(例如找到最大的“myinteger”)。

更一般地说,是否有可能/希望尝试我尝试实现的目标,编写代码假设myinteger仅指某个整数类型?

c

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

标签 统计

matplotlib ×3

python ×3

c ×1

scipy ×1

scope ×1

variables ×1