小编Aki*_*ura的帖子

如何更改matplotlib.pyplot.colorbar.ColorbarBase的刻度字体大小?

我想知道如何改变的蜱的字体大小ColorbarBasematplotlib.以下行是我的分析脚本中的相关部分,在其中ColorbarBase使用.

import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
import matplotlib as mpl

axcb = fig.add_axes([0.9, 0.135, 0.02, 0.73])

cb = mpl.colorbar.ColorbarBase(axcb, norm=LogNorm(vmin=7e-5, vmax=1), cmap=plt.cm.CMRmap)
cb.set_label("Relative Photon Intensity", labelpad=-1, size=14)
Run Code Online (Sandbox Code Playgroud)

matplotlib在OS X上使用1.4版本的Python 2.7.

matplotlib

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

使用CMake + SWIG + Python进行`make install`

我正在编写一个C++库,可以在Mac和Linux上使用C++和Python.所以我决定将CMake和SWIG用于我的项目.

如SWIG 2.0文档中所述,SWIG和CMake的组合在我的Mac上也可以正常工作. http://www.swig.org/Doc2.0/SWIGDocumentation.html#Introduction_build_system

但我有一个问题make install.

输入后cmake .make,_example.so成功生成.但是make install不起作用,因为自动生成的Makefile没有install目标.我想知道如何install在Makefile中添加目标.我想_example.so安装在site-packages每个系统的目录下.

如果有人能告诉我如何修改上面链接中写的CMake示例,我将非常感激.

c++ python swig makefile cmake

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

如何在Python + SWIG中接收引用和指针参数?

我有一个C++函数,其中给出了两个参数,如下例所示.

void func(int& n, char** data)
{
  *data = other_func1(); // returns a char array
  n = other_func2(); // returns the length of the array
}
Run Code Online (Sandbox Code Playgroud)

我可以在C或C++中轻松使用此函数,但我不知道如何从使用SWIG生成的Python模块中调用它.我想我必须编写另一个C++函数,例如,返回std :: pair.但是如果可能的话,我想知道Python方面的解决方法.有人可以帮忙吗?

c++ python swig

8
推荐指数
1
解决办法
4077
查看次数

如何在GitHub markdown文件中嵌入Google地图

我正在寻找一种方法将谷歌地图嵌入GitHub降价文件中.我知道GitHub不允许用户<iframe>在.md文件中使用该标记,因此可能无法在.md文件中嵌入Google Maps.

我有没有办法在GitHub降价文件中使用谷歌地图?

html github

8
推荐指数
1
解决办法
2046
查看次数

SWIG不展开嵌套宏“错误:输入(3)中的语法错误”

我有一个C ++头文件,它定义了嵌套宏。可以使用Clang或GCC进行编译,但是SIWG无法正确解析它们。

我可以编译MyClass.cc包含头文件的文件。

$ g++ MyClass.cc -c -o MyClass.o
Run Code Online (Sandbox Code Playgroud)

但是SWIG 3.0.2产生以下错误。

$ swig -c++ -python MyClass.i   
MyClass.h:15: Error: Syntax error in input(3).
Run Code Online (Sandbox Code Playgroud)

如何清除此错误?Util.h在此问题中解释的技巧中使用的宏定义将在参数数量上重载宏

实用程序

#ifndef UTIL_H_
#define UTIL_H_

#define GET3(Name, Title, Type) \
  Type Get##Title() const { \
    return f##Name; \
  }
#define ARG_LEN_SWITCH(_1, _2, _3, NAME, ...) NAME
#define GET2(Name, Type) GET3(Name, Name, Type)
#define GET(...) ARG_LEN_SWITCH(__VA_ARGS__, GET3, GET2)(__VA_ARGS__)

#endif // UTIL_H_
Run Code Online (Sandbox Code Playgroud)

MyClass.h

#ifndef MY_CLASS_H_
#define MY_CLASS_H_

#include <iostream>
#include <string>
#include "Util.h"

 class …
Run Code Online (Sandbox Code Playgroud)

c++ swig

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

在PyCharm中混合使用Emacs和macOS按键绑定

在适用于macOS的PyCharm Professional 2019.2中,是否有任何简单的方法可以将类似Emacs的键绑定和类似于macOS的键绑定混合在一起?

PyCharm启用的Emacs键盘映射启用Ctrl-P, Ctrl-S, Ctrl-K,等。但是它会禁用?-N,``?-P,和其他类似macOS的快捷方式。macOS的优点之一是可以同时使用,Ctrl-XX并且?-XX可以启用多种键盘快捷键。但是,PyCharm中的Emacs键盘映射与我想要的有所不同。

理想情况下,Ctrl-KCtrl-Y不能使用系统剪贴板(即只?-C?-V应访问)。相反,他们应该访问专用的内存缓冲区。

pycharm

6
推荐指数
0
解决办法
62
查看次数

如何使用SWIG将C数组转换为Python元组或列表?

我正在开发一个C ++ / Python库项目,该项目在将C ++代码转换为Python库时使用SWIG。在C ++标头之一中,我具有一些全局常量值,如下所示。

const int V0 = 0;
const int V1 = 1;
const int V2 = 2;
const int V3 = 3;
const int V[4] = {V0, V1, V2, V3};
Run Code Online (Sandbox Code Playgroud)

我可以直接从Python使用V0到V3,但不能访问中的条目V

>>> import mylibrary
>>> mylibrary.V0
0
>>> mylibrary.V[0]
<Swig Object of type 'int *' at 0x109c8ab70>
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'SwigPyObject' object has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何自动转换V为Python元组或列表?我该怎么办.i

python swig

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

如何在/ include和/ src目录下自动移动*.pb.h和*.pb.h?

我正在开发一个使用Google Protocol Buffers(protobuf)和CMake的库.该项目具有以下目录树.

MyProject/
MyProject/include/myproject/
MyProject/include/myproject/some_classes.h
MyProject/src/
MyProject/src/some_classes.cc
MyProject/src/foo.proto
MyProject/CMakeList.txt
Run Code Online (Sandbox Code Playgroud)

CMakeList.txt 有以下几行来生成protobuf源文件和头文件.

include_directories(${libCHEC_SOURCE_DIR}/include)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SOURCES)

find_package(Protobuf REQUIRED)
file(GLOB ProtoFiles "${CMAKE_CURRENT_SOURCE_DIR}/src/*.proto")
protobuf_generate_cpp(ProtoSources ProtoHeaders ${ProtoFiles})
list(APPEND EXTLIBS ${PROTOBUF_LIBRARIES})

add_library(MyLibrary SHARED ${SOURCES} ${ProtoSources})
target_link_libraries(MyLibrary ${EXTLIBS})
Run Code Online (Sandbox Code Playgroud)

当我执行cmake,foo.pb.hfoo.pb.cc生成目录下生成(即,其中执行我的目录cmake).看起来这是默认行为.不过,我想提出foo.pb.hfoo.pb.ccinclude/myprojectsrc分别目录.

如何更改生成的文件的位置protoc

cmake protocol-buffers

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

如何删除使用SWIG生成的Python包装器中的堆积对象?

我正在开发一个Python模块和一个C++库.在C++代码中,我有一个函数,它返回一个堆积的对象,如下所示.

MyClass* func()
{
  MyClass* myclass = new MyClass();
  return myclass;
}
Run Code Online (Sandbox Code Playgroud)

但是当我在Python端使用这个函数时,我无法删除返回的对象.

myclass = func()
del myclass # still remains in memory
Run Code Online (Sandbox Code Playgroud)

有谁能告诉我如何删除Python代码中返回的对象,好吗?

我可以将返回值的类型从MyClass*更改为MyClass,以便我可以避免此内存泄漏.但我不想触及C++代码,因为C++库已经在另一个地方使用了.

c++ python swig

4
推荐指数
1
解决办法
1742
查看次数

什么是sscanf中uint16_t的正确和便携(Clang/GCC)修饰符?

当我尝试sscanf(value, "%h" PRIu16 "B", &packet_size) 使用Clang 600.0.57(OS X)编译此代码时,我收到一条警告消息 .

warning: format specifies type 'unsigned char *' but the argument has type 'uint16_t *'
      (aka 'unsigned short *') [-Wformat]
    if (sscanf(value, "%h" PRIu16 "B", &packet_size) == 1) {
                       ~~~~            ^~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

但是如果我删除修饰符"h",那么我在GCC 4.8.3(Scientific Linux 7)中得到以下错误.

warning: format ‘%u’ expects argument of type ‘unsigned int*’, but argument 3 has type ‘uint16_t* {aka short unsigned int*}’ [-Wformat=]
     if (sscanf(value, "%" PRIu16 "B", &packet_size) == 1) {

                                                   ^
Run Code Online (Sandbox Code Playgroud)

什么是sscanf中uint16_t*的正确和便携修饰符?

===在===下面添加了更多自我解释的例子

test.c的

#ifndef __STDC_FORMAT_MACROS
#define …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc clang

4
推荐指数
1
解决办法
1051
查看次数

标签 统计

c++ ×5

swig ×5

python ×4

cmake ×2

c ×1

clang ×1

gcc ×1

github ×1

html ×1

makefile ×1

matplotlib ×1

protocol-buffers ×1

pycharm ×1