В matplotlib, как мне заполнить две кривые, определенные двумя различными наборами массивов?

Если я понимаю достаточно хорошо, вы хотите получить географическое расположение посетителей на своем сайте или в веб-приложении. Альтернативы, которые я знаю:

Google Gears имеет некоторые функции для создания GeoLocation ( http://code.google.com/apis/gears/api_geolocation.html ), но нужно для установки Gears

Использование функций JavaScript, которые вызывают онлайн-сервис, такой как инструменты IP-поиска (www dot iplocationtools dot com). На сайте есть примеры и даже есть видео-учебник.

4
задан HD 189733b 18 January 2019 в 14:43
поделиться

2 ответа

Я изо всех сил пытаюсь однозначно истолковать ваш вопрос, но я думаю, что вы просто хотите использовать fill, что-то вроде:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.array([1.0, 2.0, 3.0, 4.0, 5.0])
y1 = np.array([3.0, 2.0, 3.0, 2.0, 3.0])

x2 = np.array([1.5, 2.5, 3.5, 4.5, 5.5])
y2 = np.array([5.0, 6.0, 7.0, 8.0, 9.0])

plt.plot(x1, y1, 'o')
plt.plot(x2, y2, 'x')

plt.fill(
    np.append(x1, x2[::-1]),
    np.append(y1, y2[::-1]),
)

даст вам

[ 113] this plot

0
ответ дан Sam Mason 18 January 2019 в 14:43
поделиться

Вы можете использовать многоугольные патчи для рисования четырехугольников, заполняющих пространство между двумя кривыми - единственная сложная точка - это генерация 5 точек, которые определяют многоугольник, но (ab) с помощью zip это можно сделать ... также вам нужно знать, как разместить полигоны на графике, но это легко, если вы знаете matplotlib.collections.PatchCollection и ax.add_collection

import numpy as np 
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection

x1 = np.linspace(0,6,21) ; y1 = np.sin(x1)
x2 = x1+0.28 ; y2 = np.cos(x2)

fig, ax = plt.subplots()                                                         
ax.plot(x1, y1, x2, y2)
patches = [Polygon(poly) for poly in (
              [p0,p1,p2,p3,p0] for p0,p1,p2,p3 in 
                    zip(zip(x1,y1),zip(x1[1:],y1[1:]),zip(x2[1:],y2[1:]),zip(x2,y2)))
ax.add_collection(PatchCollection(patches, alpha=0.6))

a sample plot [118 ]

Как видите, он не идеален , но, может быть, он достаточно хорош ...

0
ответ дан gboffi 18 January 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: