Как добавить фильтр в набор данных поиска?
Я следую диаграмме связей: 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
Добавьте фильтр преобразования для поиска данных в диаграмме Альтаира. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Установить форму только некоторых точек на диаграмме рассеяния Альтаира
Anonymous » » в форуме Python - 0 Ответы
- 99 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Отключите *все* элементы легенды на диаграмме Альтаира в блокноте Jupyter.
Anonymous » » в форуме Python - 0 Ответы
- 76 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Не в состоянии сделать стержни в горизонтальном диаграмме в диаграмме.
Anonymous » » в форуме Javascript - 0 Ответы
- 39 Просмотры
-
Последнее сообщение Anonymous
-