Добавьте фильтр преобразования для поиска данных в диаграмме Альтаира.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Добавьте фильтр преобразования для поиска данных в диаграмме Альтаира.

Сообщение Anonymous »

Как добавить фильтр в набор данных поиска?
Я следую диаграмме связей: https://altair-viz.github.io/gallery/ Airport_connections.html. Я создал набор данных, аналогичный двум использованным наборам данных (airports и Flight_airport).
Мои данные отличаются тем, что я добавил «регион», в который попадет точка (аэропорт). Затем я добавил третий набор данных, который перебирает заданное количество кластеров и прогнозирует область точки с помощью модели KMeans. Я хочу установить цвет точек в соответствии с цветом прогнозируемой области из модели KMeans. Я могу сделать это, жестко закодировав фильтр в кадре данных, но в конечном итоге мне бы хотелось, чтобы фильтр был встроен в диаграмму Альтаира, а не жестко запрограммирован.
# Make blobs
n = 50
x, y = make_blobs(n, 2, centers=4, random_state=42, cluster_std=2)

# Frame it
airports = pd.DataFrame(x, columns=['latitude', 'longitude'])
iata = np.array([i for i in range(n)]).reshape(-1,1)
airports['iata'] = iata
airports['region'] = y
airports = airports[['iata', 'latitude', 'longitude', 'region']]

# Find variable
data = []
for i in range(len(x)):
for j in range(len(x)):
if i != j:
data.append([i, j, np.random.randint(1, 100)])

# Frame it
flights_airport = pd.DataFrame(data, columns=['origin', 'destination', 'routes'])

# Apply K-means clustering
for num_clusters in range(1, n):

# Create KMeans clustering model and fit to airport data
kmeans = KMeans(n_clusters=num_clusters)
kmeans.fit(airports[['latitude', 'longitude']])

# Concatenate to "data" for the clusters dataframe
if num_clusters == 1:
data = np.concatenate([iata, np.array([num_clusters]*n).reshape(-1,1), kmeans.labels_.reshape(-1,1)], axis=1)
else:
new_data = np.concatenate([iata, np.array([num_clusters]*n).reshape(-1,1), kmeans.labels_.reshape(-1,1)], axis=1)
data = np.concatenate([data, new_data], axis=0)

# Create clusters dataframe
clusters = pd.DataFrame(data, columns=['iata', 'number_clusters', 'predicted region'])

# I want to add this filter in my altair chart
#clusters = clusters[clusters['number_clusters']==4]

# Create selection (select the point (airport))
select_city = alt.selection_point(
on='click', nearest=True, fields=['origin'], empty=False
)

# Create lookups for points and clusters
airports_lookup = alt.LookupData(
airports, key='iata', fields=['latitude', 'longitude', 'region']
)
cluster_lookup = alt.LookupData(
clusters, key='iata', fields=['number_clusters', 'predicted region']
)

# Create a dropdown to filter clusters by the number of clusters
num_clusters_downdrop = alt.binding_select(options=[str(i+1) for i in range(50)], name='Number of Clusters')
downdrop_select = alt.selection_point(fields=['number_clusters'], bind=num_clusters_downdrop)

# Create the connections
connections = alt.Chart(flights_airport).mark_rule(opacity=0.35).encode(
latitude='latitude:Q',
longitude='longitude:Q',
latitude2='lat2:Q',
longitude2='lon2:Q'
).transform_lookup(
lookup='origin',
from_=airports_lookup
).transform_lookup(
lookup='destination',
from_=airports_lookup,
as_=['lat2', 'lon2', 'Blob']
).transform_filter(
select_city
)

# Create points chart to show the points (airports)
points = alt.Chart(flights_airport).mark_circle().encode(
latitude='latitude:Q',
longitude='longitude:Q',
color='predicted region:N'
).transform_lookup(
lookup='origin',
from_=airports_lookup
).transform_lookup(
# Look up the 'predicted region' based on origin
lookup='origin',
from_=cluster_lookup
).add_params(
select_city
).add_params(
downdrop_select
)

connections + points


Подробнее здесь: https://stackoverflow.com/questions/791 ... tair-chart
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»