小编p-r*_*bot的帖子

在Python,GeoPandas或形状上(在单个几何体中)组合多边形

我试图在GeoPandas中找到两个多边形的并集,并输出一个包含两个多边形点作为其顶点的几何体.该geopandas.overlay函数为每个单独的联合提供了多边形,但我想要一个多边形.

对于上下文,我使用它将两个管理区域组合成一个区域(即包括一个国家内的城镇区域).

以下示例来自geopandas网站,并说明了我想要的内容:

from matplotlib import pyplot as plt
import geopandas as gpd
from shapely.geometry import Polygon

polys1 = gpd.GeoSeries([Polygon([(0,0), (2,0), (2,2), (0,2)]),
                         Polygon([(2,2), (4,2), (4,4), (2,4)])])

polys2 = gpd.GeoSeries([Polygon([(1,1), (3,1), (3,3), (1,3)]),
                         Polygon([(3,3), (5,3), (5,5), (3,5)])])

df1 = gpd.GeoDataFrame({'geometry': polys1, 'df1':[1,2]})
df2 = gpd.GeoDataFrame({'geometry': polys2, 'df2':[1,2]})

res_union = gpd.overlay(df1, df2, how='union')
res_union.plot()
Run Code Online (Sandbox Code Playgroud)

res_union.png

没有任何输出几何是我所期望的,具体如下:

poly_union = gpd.GeoSeries([Polygon([(0,0), (0,2), (1,2), (1,3), \
    (2,3), (2,4), (3, 4), (3, 5), (5, 5), (5, 3), (4, 3), (4, 2), \
    (3,2), (3,1), …
Run Code Online (Sandbox Code Playgroud)

python pandas shapely geopandas

26
推荐指数
3
解决办法
2万
查看次数

Matplotlib:如何在不透明的线边缘的情况下拥有透明的箱线图面?

我正在构建一个函数来绘制自定义箱线图。我希望盒子的表面是平坦的,略带透明度,并且我希望在每个盒子的表面周围都有一条细的实线(不透明)。

我一直在尝试通过在调用后设置框的参数来尝试此操作,matplotlib.pyplot.boxplot如下所示。

当我查看要筛选的图时,它显示了我想要的内容。但是,当我使用创建 pdf 时,比如说,matplotlib.pyplot.savefig("output.pdf")线条不是实线,它也是透明的。当我放大 pdf 文件时,这种透明度很明显。

有没有人知道如何在保持箱线图面透明度的同时使线条不透明?

提前致谢。

from matplotlib import pyplot as plt
import numpy as np

data = {}
data['a'] = np.arange(12)+1
data['b'] = np.arange(14)+1
data['c'] = np.arange(8)+1

cols = ['red', 'blue', 'green']

controls = ['trt_a', 'trt_b', 'trt_c']

fig, ax = plt.subplots()

boxplot_dict = ax.boxplot([data[x] for x in ['a', 'b', 'c']], \
    positions = [1, 1.5, 2], labels = controls, \
    patch_artist = True, widths = 0.25)

for b, c in zip(boxplot_dict['boxes'], cols): …
Run Code Online (Sandbox Code Playgroud)

python matplotlib alpha-transparency boxplot

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

当x轴是日期时,如何在matplotlib中的xticks(使用x坐标)下方绘制文本?

我试图在 matplotlib 图中的 x 刻度线下方绘制任意文本(请参见下面的示例图)。我使用日期作为 x 轴,例如,我想显示与每个日期关联的某些变量的计数。

在下面的示例中,我使用图中 0-1 的相对位置作为文本应放置的 x 坐标。然而,我只是猜测了这些相对值(使用反复试验),所以我想知道如何使用 x 数据的实际位置而不是使用这些 0-1 相对缩放来绘制 x 刻度下方的文本这是figtext中的默认值吗?

import numpy as np
import matplotlib.pyplot as plt
import datetime

x = [datetime.datetime(2010, 12, 1, 0, 0),
    datetime.datetime(2011, 1, 1, 0, 0),
    datetime.datetime(2011, 5, 1, 1, 0)]
y = [4, 9, 2]

fig, ax = plt.subplots()
ax.bar(x, y, width = 20)

xticks = ax.get_xticks()
xtick_rel_position = np.linspace(0.13, 0.81, len(xticks)) # <- these are just guessed

counts = np.random.randint(0, 25, len(xticks))

for i, …
Run Code Online (Sandbox Code Playgroud)

python datetime text matplotlib

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

matplotlib:boxplot 对象中的传单设置不正确

我正在努力将箱线图中的传单标记更改为我选择的自定义颜色。在前三个值之后,它将恢复为默认值。我看到有几个与此相关的 matplotlib 问题,有什么解决方案吗?

在此先感谢您的帮助!

import matplotlib.pyplot as plt

x = [0.15, 0.11, 0.06, 0.06, 0.12, 0.56]
y = [x, x, x, x, x, x]
boxes = plt.boxplot(y, sym="o")

cols = ['green', 'red', 'blue', 'orange', 'purple', 'black']

for f, fc in zip(boxes['fliers'], cols):
    f.set_color(fc)
    f.set_markersize(40)
    f.set_alpha(0.6)
    f.set_markeredgecolor("None")
    f.set_marker('.')

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

在此处输入图片说明

python matplotlib boxplot python-2.7

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

如何使用命令行在Github中添加协作者?

我想知道如何使用命令行将协作者添加到GitHub中的私人仓库.我在Mac(10.6.8)或Ubuntu 11.04上.

terminal github github-api

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

导入存储在python模块中的csv数据

我有一个科学计算项目,我正在运行分析,并希望与python模块保存一些数据.我希望数据是"可导入的",可以在几个例子中使用.

项目文件夹层次结构如下所示:

~/parent/
    setup.py
    setupegg.py
    /project
        __init__.py
        core.py
        /data
            __init__.py
            load_data.py
            somedata.csv
        /examples
            __init__.py
            ex1.py
Run Code Online (Sandbox Code Playgroud)

python setupegg.py develop从项目主文件夹运行,所以这个包可以从我的计算机上的任何地方导入.这项工作到目前为止.

该文件load_data.py如下所示:

import pandas as pd
df = pd.read_csv("somedata.csv")
Run Code Online (Sandbox Code Playgroud)

文件ex1.py看起来像这样:

from test_module.data.load_data import df
def run():
    print df
Run Code Online (Sandbox Code Playgroud)

但现在当我运行from project.examples import ex1from project.data import load_data收到一条IOError消息时,说'somedata.csv'不存在.

如果我将它添加到data/load_data.py文件的前导码中

import os
print os.listdir('./')
Run Code Online (Sandbox Code Playgroud)

它打印我正在工作的目录中的文件/文件夹列表.

当然,如果我对数据使用绝对路径名,那么它将完全加载.如何调整import语句,以便读取数据文件夹中的csv文件不使用绝对路径名?

python relative-path scientific-computing python-import pandas

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

使用pandas.DataFrame.mean时返回pandas DataFrame

该函数pandas.DataFrame.mean始终返回pandas.Series。我希望它返回一个与原始数据框具有相同列名的数据框。如何做到这一点?

import numpy as np, pandas as pd
df = pd.DataFrame(np.random.rand(10,5), columns = ['a', 'b', 'c', 'd', 'e'])
Run Code Online (Sandbox Code Playgroud)

这将返回pandas.Series对象

df.mean()
Run Code Online (Sandbox Code Playgroud)

这也是

df.mean(level = 0)
Run Code Online (Sandbox Code Playgroud)

这也是

df.mean(axis = 0)
Run Code Online (Sandbox Code Playgroud)

我当前的操作方式是使用以下命令,这是最简单的方法吗?

means = df.mean(axis = 0)
pd.DataFrame(means).T
Run Code Online (Sandbox Code Playgroud)

我希望有一个更直接的解决方案!

python dataframe pandas

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

图中最外层 Voronoi 多边形的透明或均匀颜色

我正在尝试删除 Voronoi 图中的外部多边形。主要情节是这样的:

require(ggplot2)
require(ggvoronoi)
set.seed(2023)

N <- 80
x <- runif(N)
y <- runif(N)
df <- data.frame(x, y)
df$dist <- rnorm(N)

ggplot(df, aes(x, y, fill = dist)) +
    geom_voronoi() +
    stat_voronoi(geom = "path") +
    theme_void()
Run Code Online (Sandbox Code Playgroud)

主图

如果我对轴设置限制,就会发生接近我想要的情况。然而,仍然填充了一些外部多边形:

ggplot(df, aes(x, y, fill = dist)) +
    geom_voronoi() +
    stat_voronoi(geom = "path") +
    theme_void() + 
    xlim(0.1, 0.9) + 
    ylim(0.1, 0.9)
Run Code Online (Sandbox Code Playgroud)

[有限图片

隔离/识别图形边缘周围最外层的多边形并使它们透明或统一颜色的最佳方法是什么?

voronoi r ggplot2 r-sf

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