小编Con*_*nor的帖子

如何旋转 matplotlib 地图?

从我从https://s3.amazonaws.com/nyc-tlc/misc/taxi_zones.zip获得的 shapefile 开始,我想绘制曼哈顿区,并为每个出租车区绘制轮廓。

此代码单独轮换每个单独的出租车区域,而不是一次轮换所有。

import geopandas as gpd
from matplotlib import pyplot as plt


fname = "path_to_shapefile.shp"
df = gpd.read_file(fname)
df = df[df['borough'] == "Manhattan"]
glist = gpd.GeoSeries([g for g in df['geometry']])
glist = glist.rotate(90)
glist.plot()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

[编辑] 我进一步改进了它,以便能够以编程方式旋转图像。但是,如果我添加一个图例,那么它也会被旋转,这是不可取的。仍在寻找更好的解决方案。请注意,还有这个 stackoverflow 帖子(如何将 matplotlib 图旋转 90 度?),但是,旋转图而不是图像的解决方案仅适用于 90 度旋转。

import geopandas as gpd
from matplotlib import pyplot as plt

import numpy as np
from scipy import ndimage
from matplotlib import transforms


fname = "path_to_shapefile.shp"
df = gpd.read_file(fname)
df = …
Run Code Online (Sandbox Code Playgroud)

python matplotlib geopandas

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

Pythonlibs3 CMake和macOS

[更新2]

以下两行,当添加到我的CMake文件中时,成功找到了python 3及其库.这只是在终端工作的原因是因为CLion正在使用其捆绑版本的CMake(3.6.3)和我的终端正在使用的更新版本(3.7.2)正确找到python.

FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)
Run Code Online (Sandbox Code Playgroud)

[UPDATE]我得到了cmake文件,但是,当我从终端运行时它只找到python3库.从CLion运行时,我收到以下错误:

CMake错误:此项目中使用以下变量,但它们设置为NOTFOUND.请设置它们或确保它们在CMake文件中正确设置和测试:PYTHON_LIBRARY(ADVANCED)

[原始帖子]

我正在开发一个跨平台的C++应用程序,并使用PythonLibs 3和boost_python来从python调用c ++方法.在ubuntu这工作正常但是,在macOS上,我似乎无法让cmake识别pythonlibs3.

在ubuntu上,以下行有效:

FIND_PACKAGE(PythonLibs 3 REQUIRED)
Run Code Online (Sandbox Code Playgroud)

但是,在macOS上,它只能使用pythonlibs 2.7.10 /usr/libs/

我尝试过以下方法:

  1. 使用python3虚拟环境然后运行cmake.
  2. 添加set(Python_ADDITIONAL_VERSIONS 3.6)到我的cmake

其他信息:

  • 我用brew安装了python3(3.6),它位于/ usr/local/bin中
  • 我使用的是cmake版本3.6.3
  • 当我写FIND_PACKAGE(PythonInterp 3)cmake时能够找到我的python3安装.
  • 检查我的/usr/lib/文件夹时,我发现libpython2.7.dylib但是我没有libpython3.6/dylib,/usr/lib/或者/usr/local/lib/.这似乎是因为找到了这个文件/usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib.

如果我将libpython3.6的位置添加到我的find_package中,

FIND_PACKAGE(PythonLibs 3 PATHS /usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/ REQUIRED)

它能够找到库但我得到错误:

找不到具有
以下任何名称的"PythonLibs" (请求的版本3)提供的包配置文件:

PythonLibsConfig.cmake
pythonlibs-config.cmake
Run Code Online (Sandbox Code Playgroud)

将"PythonLibs"的安装前缀添加到CMAKE_PREFIX_PATH或将"PythonLibs_DIR"设置为包含上述文件之一的目录.如果"PythonLibs"提供单独的开发包或SDK,请确保它已安装.

另外,如果我尝试在不使用find_package的情况下设置python变量,它可以找到库:

SET(PYTHON_INCLUDE_PATH /usr/local/include/python3.6mu) SET(PYTHON_EXECUTABLE /usr/local/bin/python3.6mu) SET(PYTHON_INCLUDE_DIR /usr/local/include/python3.6mu) SET(PYTHON_LIBRARIES /usr/local/Cellar/python3/3.6.0/Frameworks/Python.framework/Versions/3.6/lib/)

但是后来我的cmake中出现了以下错误:

PYTHON_ADD_MODULE(${PYRITMO_LIB} src/pythonwrappers.cpp)

错误如下:

未知的CMake命令"PYTHON_ADD_MODULE".

这样做的原因似乎是因为此函数是由其FindPythonLibs.cmake加载的find_package(Pythonlibs),因此,如果这不是用于定位PythonLibs,则无法调用此函数.

c++ python macos cmake clion

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

使用交互式 ipython 笔记本运行 Tkinter

我想创建一个交互式 Python 编码游戏,用户可以在 Jupyter Notebook 中输入命令并在 GUI 上实时查看结果。这似乎在常规的 python 交互式 shell 中工作得很好。我让它运行的方法如下:

  1. 我创建了一个文件,让我们example.py使用以下代码调用它:
import tkinter as tk


def create_canvas():
    root = tk.Tk()
    root.resizable(False, False)
    root.title("Karel")
    frame = tk.Frame(root)
    frame.pack()
    canvas = tk.Canvas(frame, bg="white", width=500, 
        height=500)
    canvas.pack()
    return canvas


def create_oval(canvas):
    return canvas.create_oval(150, 150, 155, 155, fill='#000')



def move(canvas, oval):
    canvas.move(oval, 0, -50)
Run Code Online (Sandbox Code Playgroud)
  1. 然后在交互式 python shell 中执行以下操作:
>> import example
>> canvas = example.create_canvas()
>> oval = example.create_oval(canvas)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在 ipython 中使其工作时,我没有看到 GUI(我假设这是因为我不执行 tkintersmainloop函数)。但如果我执行该mainloop函数,那么我就无法再让用户在交互式 python shell …

python tkinter ipython jupyter-notebook

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

如何防止 Cargo Clippy 分析生成的 Prost 文件

我正在使用 prost 为 protobuf 生成 Rust 类。我希望 Clippy 忽略这些生成的文件,但我无法弄清楚如何让 Clippy 忽略它们。

在我的 lib.rs 文件中,我有

pub mod modes {
    #[allow(clippy)]
    include!(concat!(env!("OUT_DIR"), "/modes.rs"));
}

#[allow(clippy)]
pub mod vehicle_features {
    include!(concat!(env!("OUT_DIR"), "/vehicle_features.rs"));
}
Run Code Online (Sandbox Code Playgroud)

但是,我仍然收到 models.rs 和vehicle_features.rs 文件的警告。如何在不修改文件的情况下忽略clippy中的这些模块/文件。

编辑:根据以下建议,我将代码更改为:

pub mod modes {
    #![allow(clippy::all)]
    include!(concat!(env!("OUT_DIR"), "/modes.rs"));
}

pub mod vehicle_features {
    #![allow(clippy::all)]
    include!(concat!(env!("OUT_DIR"), "/vehicle_features.rs"));
}
Run Code Online (Sandbox Code Playgroud)

这在跑步时有效cargo clippy,但在跑步时不起作用cargo clippy -- -W unwrap_used有人知道为什么吗?当我向 Clippy 添加额外的警告参数时,如何使其工作?

编辑2:

我在这里找到了答案:How to disable a Clippy lint for a single line / block?

“clippy:all 实际上并不允许所有 lints,而是允许正确性、可疑性、风格、复杂性、cargo …

rust prost rust-clippy

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

Rust:将值从选项中移出并推入堆栈

我有一个 Option 类型的值。如果类型中有一个 Leg 值,我想修改 Leg 结构,然后通过将腿从当前存储的位置移动self._current_legself._completed_legs. 然后我想将该_current_leg值设置为堆栈中的下一条腿_expected_legs。但是,我收到了一个类型不匹配的错误,self._completed_legs.push(leg)因为Trip.dropoff()堆栈需要一个 Leg 类型的结构,而我正在传递一个&mut Leg类型。我不知道如何将值移出变量_current_leg——我似乎只能借用该值。

相关代码位于该代码块的底部。谢谢您的帮助。

use std::collections;

pub struct Stack<T> {
    maxsize: usize,
    items: Vec<T>,
}

impl<T> Stack<T> {

    pub fn new(maxsize: usize) -> Self {
        Self {
            maxsize,
            items: Vec::with_capacity(maxsize),
        }
    }
    pub fn pop(&mut self) -> Option<T> {
        self.items.pop()
    }
    pub fn push(&mut self, item: T) -> bool {
        if self.items.len() == self.maxsize {
            return …
Run Code Online (Sandbox Code Playgroud)

rust borrow-checker

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