Плотно фоновые изображения - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь получить фоновое изображение на графике, используя плотно. Кажется, я не могу отобразить ЛЮБОЕ изображение без использования одной из ссылок на images.plot.ly. Я пробовал веб-адреса и локальные изображения в той же папке, что и проект. Вот что появляется, когда я использовал URL-адрес изображения из их урока:

https://plot.ly/python/images/

Это единственный раз, когда я могу найти что-нибудь. Любая другая ссылка просто ничего не дает на графике. Какие-нибудь советы? Я искал высоко и низко для этого.

layout = dict(title = 'Crime Cluster Statistics',
                  yaxis = dict(zeroline = False),
                  xaxis = dict(zeroline = False),
                  images= [dict(
                      source= "https://images.plot.ly/language-icons/api-home/python-logo.png",
                      xref= "x",
                      yref= "y",
                      x= 0,
                      y= 3,
                      sizex= 150000,
                      sizey= 150000,
                      sizing= "stretch")]
                 )

enter image description here

То, что я действительно ДЕЙСТВИТЕЛЬНО хочу, это разместить изображение штата США на фоне изображения, так как точки должны представлять события в координате GPS для этого состояния. Но я не могу получить какое-либо изображение для загрузки на задний план, кроме этого.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

В случае, если это поможет кому-то еще искать, как заставить локальное изображение работать как фоновый сюжет, вот что я использовал, чтобы заставить его работать:

figure = {'data': data,
          'layout': {'xaxis': {'range': [-800, 800], 'autorange': False, 'dtick':100, 'title':'South'},
                     'yaxis': {'range': [-800, 800], 'autorange': False, 'dtick':100,'title': 'West (km)'},
                     'title': 'Sample LEO1 Main-Lobe Ground Contour (4.5 deg)',
                     'autosize':False, 'width':1.5*437, 'height':1.5*615,
                     'images': [{'source': "C:\\map.jpg",                          
                                 'sizing': 'stretch', 'xref': 'paper', 'yref': 'paper', 'x':0,'y':1, 'layer':'below',
                                 'sizex':1,'sizey':1,'opacity':1
                                }]                     
                    },                                        
         }

... где «данные» предварительно настроены как графические объекты.

0 голосов
/ 29 мая 2018

Я тоже пытался это сделать (прочитать локальное изображение и сделать его своим фоном на графике) и продолжал ходить по кругу с ним (вероятно, потому что я довольно новичок во всем этом, а также пытался понять кодировку base64). Это мое простое решение в ноутбуке Jupyter с использованием сюжета в автономном режиме:

import base64
with open("C:/My.png", "rb") as image_file:
    encoded_string = base64.b64encode(image_file.read()).decode()
#add the prefix that plotly will want when using the string as source
encoded_image = "data:image/png;base64," + encoded_string

Теперь ваш макет для графического графика может выглядеть следующим образом (в этом случае - имейте в виду, что вы используете фактические диапазоны данных на графике, чтобы разместить на нем изображение, поэтому х и Y должны быть в соответствующий диапазон):

"layout": Layout(title='Graph Title', 
                 yaxis=dict(title='Y Label'), 
                 xaxis=dict(title='X Label'),
                 images=[dict(
                  source= encoded_image,
                  xref= "x",
                  yref= "y",
                  x= 0,
                  y= 10,
                  sizex= 20,
                  sizey= 10,
                  sizing= "stretch",
                  opacity= 0.7,
                  layer= "below")])
...