Как сделать точечный график с эффектом гало, используя Matplotlib? - PullRequest
0 голосов
/ 06 мая 2018

Я хочу построить скрытое пространство гауссовых случайных величин где x_i~Gaussian(u_i, simga_i) Я хочу представить неопределенность в сюжете, как эта картина plot made by someone Но я не могу найти API, как это сделать с Matplotlib!

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Чтобы добавить больше очков:

import numpy as np
import matplotlib.pyplot as plt

def normal_pdf(x, mean, var):
    return np.exp(-(x - mean)**2 / (2*var))

def add_point(mu, std, ax):
    x = normal_pdf(xx, mu, std)
    y = normal_pdf(yy, xmax-mu, std)
    weights = np.array(np.meshgrid(x, y)).prod(0)
    ax.imshow(weights, extent=(xmin, xmax, ymin, ymax), cmap=plt.cm.Blues, alpha=0.5)
    plt.plot(mu, mu, "bo")


xmin, xmax, ymin, ymax = (0, 150, 0, 150)

N = 1000
xx = np.linspace(xmin, xmax, N)
yy = np.linspace(ymin, ymax, N)

fig, _ax = plt.subplots()

add_point(50, 75, _ax)
add_point(10, 25, _ax)

plt.tight_layout()
plt.show()
0 голосов
/ 06 мая 2018

Возможно, вы могли бы попробовать что-то вроде примера ниже? (изменено с здесь )

import numpy as np
import matplotlib.pyplot as plt

def normal_pdf(x, mean, var):
    return np.exp(-(x - mean)**2 / (2*var))

xmin, xmax, ymin, ymax = (0, 100, 0, 100)

N = 1000
xx = np.linspace(xmin, xmax, N)
yy = np.linspace(ymin, ymax, N)

x = normal_pdf(xx, 50, 75)
y = normal_pdf(yy, 50, 75)

weights = np.array(np.meshgrid(x, y)).prod(0)

plt.imshow(weights, extent=(xmin, xmax, ymin, ymax), cmap=plt.cm.Blues, alpha=0.5)
plt.plot(50, 50, "bo")
plt.tight_layout()
plt.show()

Результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...