Я не могу отобразить график с помощью python datashader
Я скачал и установил DataSheder, используя следующие шаги:
git clone https://github.com/bokeh/datashader.git
cd datashader
conda install -c bokeh --file requirements.txt
python setup.py install
После этого я запустил код, используя терминал, такой как `python data.py, но график не отображается; ничего не отображается.
Я не уверен, что выполнил правильные шаги здесь, может кто-нибудь помочь мне отобразить графики? Вот мой код:
import pandas as pd
import numpy as np
import xarray as xr
import datashader as ds
import datashader.glyphs
import datashader.transfer_functions as tf
from collections import OrderedDict
np.random.seed(1)
num=10000
dists = {cat: pd.DataFrame(dict(x=np.random.normal(x,s,num),
y=np.random.normal(y,s,num),
val=val,cat=cat))
for x,y,s,val,cat in
[(2,2,0.01,10,"d1"), (2,-2,0.1,20,"d2"), (-2,-2,0.5,30,"d3"), (-2,2,1.0,40,"d4"), (0,0,3,50,"d5")]}
df = pd.concat(dists,ignore_index=True)
df["cat"]=df["cat"].astype("category")
df.tail()
tf.shade(ds.Canvas().points(df,'x','y'))
glyph = ds.glyphs.Point('x', 'y')
canvas = ds.Canvas(plot_width=200, plot_height=200, x_range=(-8,8)y_range=(-8,8))
from datashader import reductions
reduction = reductions.count()
from datashader.core import bypixel
agg = bypixel(df, canvas, glyph, reduction)
agg
canvas.points(df, 'x', 'y', agg=reductions.count())
tf.shade(canvas.points(df,'x','y',agg=reductions.count()))
tf.shade(canvas.points(df,'x','y',agg=reductions.any()))
tf.shade(canvas.points(df,'x','y',agg=reductions.mean('y')))
tf.shade(50-canvas.points(df,'x','y',agg=reductions.mean('val')))
agg = canvas.points(df, 'x', 'y')
tf.shade(agg.where(agg>=np.percentile(agg,99)))
tf.shade(np.sin(agg))
aggc = canvas.points(df, 'x', 'y', ds.count_cat('cat'))
aggc
tf.shade(aggc.sel(cat='d3'))
agg_d3_d5=aggc.sel(cat=['d3', 'd5']).sum(dim='cat')
tf.shade(agg_d3_d5)
2 ответа
Я не пробовал ваш код, но там нет ничего, что могло бы отобразить изображение. Каждый вызов shade() создает изображение в памяти, но тут ничего не поделаешь. Если бы вы работали в среде ноутбука Jupyter и вызов shade() был последним элементом в ячейке, он отображался бы автоматически, но обычное приглашение Python не имеет такой поддержки "расширенного отображения". Таким образом, вы можете либо сохранить его в файл изображения на диске (используя, например, utils / export_image), либо вы можете присвоить результат shade() переменной, а затем передать его Bokeh, Matplotlib или другому графику, как вам удобнее. Но вы должны что-то сделать с изображением, если хотите его увидеть.
Таким образом, я смог создать сюжет одного из tf.shade в вашем коде.
from datashader.utils import export_image
img = tf.shade(canvas.points(df,'x','y',agg=reductions.count()))
export_image(img=img, filename='test1', fmt=".png", export_path=".")