<jupyter_start><jupyter_text>Available as executable or viewable Jupyter Notebook:[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/HIL-HK/lets-plot-examples/master?filepath=features%2Fpoint_and_text_on_livemap.ipynb)<jupyter_code>import pandas as pd

from lets_plot import *
LetsPlot.setup_html()

# Let's use Wikimedia Maps provided by Wikimedia Foundation (https://foundation.wikimedia.org/wiki/Maps_Terms_of_Use) 
# as map tile server. Internet connection is required. 

LetsPlot.set(maptiles_zxy(url='https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}@2x.png'))
x = [29.777834, 29.704789]
y = [59.991666, 60.019055]
data = pd.DataFrame({'x': x, 'y': y, 'name': ['A', 'B']})

labels = {
    'lon': [29.723390],
    'lat': [60.008983],
    'label': ['Kotlin']
}
ggplot(data) + ggtitle('Points and text on interactive map') + \
    geom_livemap(zoom=12) + \
    geom_point(aes(x='x', y='y', color='name'), shape=19, size=20, alpha=0.6) + \
    geom_text(aes(label='label', x='lon', y='lat'), data=labels, size=17, color='gray', \
                  family='serif', fontface='italic bold', hjust='middle', vjust='center', angle=30)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.19087837837837837, 'fraction_numerical': 0.05320945945945946, 'mean_word_length': 5.139896373056994, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '184728', 'license': 'MIT', 'n_tokens_mistral': 512, 'n_tokens_neox': 462, 'n_words': 79, 'path': 'features/point_and_text_on_livemap.ipynb', 'repo_name': 'ASmirnov-HORIS/lets-plot-examples', 'size': '1184'}