Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在BokeH绘制热图显示空图_Python_Pandas_Dataframe_Bokeh_Spectrogram - Fatal编程技术网

Python 在BokeH绘制热图显示空图

Python 在BokeH绘制热图显示空图,python,pandas,dataframe,bokeh,spectrogram,Python,Pandas,Dataframe,Bokeh,Spectrogram,我试图在博克绘制热图(光谱图),但当热图显示时,它是空的 这段代码包含一些简单的示例数据,但可以通过json扩展以获取大型数据集 from math import pi import pandas as pd from bokeh.io import show from bokeh.models import LinearColorMapper, BasicTicker, PrintfTickFormatter, ColorBar from bokeh.plotting import figu

我试图在博克绘制热图(光谱图),但当热图显示时,它是空的

这段代码包含一些简单的示例数据,但可以通过json扩展以获取大型数据集

from math import pi
import pandas as pd

from bokeh.io import show
from bokeh.models import LinearColorMapper, BasicTicker, PrintfTickFormatter, ColorBar
from bokeh.plotting import figure

# initialise data of lists. 
data = {'epoch':[63745131000000, 63745131000000, 63745131100000,63745131100000], 'energy':[1.06811, 1.22078, 1.59495, 1.82245],'value':[3981.9308143034305, 2868.5202872178324, 1330.887696894385, 745.6847248644897]} 

# Creates pandas DataFrame. 
df = pd.DataFrame(data) 

# print the data 
print(df)

# this is the colormap from the original NYTimes plot
colors = ['#00007F', '#0000ff', '#007FFF', '#00ffff', '#7FFF7F', '#ffff00', '#FF7F00', '#ff0000', '#7F0000']
mapper = LinearColorMapper(palette=colors, low=df.value.min(), high=df.value.max())

TOOLS = "hover,save,pan,box_zoom,reset,wheel_zoom"

epochs = list(df.epoch.drop_duplicates())
print(epochs)
energies = list(df.energy.drop_duplicates())
print(energies)


p = figure(title="My Plot", 
           x_axis_location="below", 
           tools=TOOLS, toolbar_location='below',
           tooltips=[('epoch', '@epoch'), ('energy', '@energy'), ('value', '@value')])

p.xaxis.ticker = epochs
p.yaxis.ticker = energies

p.grid.grid_line_color = None
p.axis.axis_line_color = None
p.axis.major_tick_line_color = None
p.axis.major_label_text_font_size = "5pt"
p.axis.major_label_standoff = 0
p.xaxis.major_label_orientation = pi / 3

p.rect(x="epoch", y="energy", width=1, height=1,
       source=df,
       fill_color={'field': 'value', 'transform': mapper},
       line_color=None)

color_bar = ColorBar(color_mapper=mapper, major_label_text_font_size="5pt",
                     ticker=BasicTicker(desired_num_ticks=len(colors)),
                     label_standoff=6, border_line_color=None, location=(0, 0))
p.add_layout(color_bar, 'right')

show(p)
输出的帧看起来正确:

            epoch   energy        value
0  63745131000000  1.06811  3981.930814
1  63745131000000  1.22078  2868.520287
2  63745131100000  1.59495  1330.887697
3  63745131100000  1.82245   745.684725
x和y的范围看起来也不错:

[63745131000000, 63745131100000]
[1.06811, 1.22078, 1.59495, 1.82245]
但显示的图像没有打印点:

我应该提到的是,如果我简单地将第二个历元改为一个历元(例如)

然后,图表似乎显示正确:

谢谢你的帮助。
谢谢

没有显示任何信息的原因是因为在edge bokeh显然不认为您的部分数据值得使用颜色

您应该更改的是mapper中的限制:

mapper = LinearColorMapper(palette=colors, low=df.value.min()-1, high=df.value.max()+1) #  this will make sure your data is inside the mapping
同样,您的宽度在图a中定义为1。当你的时代与一百万年不同时,当你策划这一变化时,你仍然几乎看不到任何东西

p.rect(x="epoch", y="energy", width=100000, height=1,  #  here width is set to an adequate level. 
       source=df,
       fill_color={'field': 'value', 'transform': mapper},
       line_color=None)

没有显示任何信息的原因是因为bokeh显然不认为您的部分数据值得使用颜色

您应该更改的是mapper中的限制:

mapper = LinearColorMapper(palette=colors, low=df.value.min()-1, high=df.value.max()+1) #  this will make sure your data is inside the mapping
同样,您的宽度在图a中定义为1。当你的时代与一百万年不同时,当你策划这一变化时,你仍然几乎看不到任何东西

p.rect(x="epoch", y="energy", width=100000, height=1,  #  here width is set to an adequate level. 
       source=df,
       fill_color={'field': 'value', 'transform': mapper},
       line_color=None)

当您将mapper中的限制从低于最低值的一个更改为高于最高值的一个(而不是完全的值)时会发生什么情况当您将mapper中的限制从低于最低值的一个更改为高于最高值的一个(而不是完全的值)时会发生什么情况谢谢回答。它似乎起作用了。如果两个时代之间的差异不规则会发生什么?如果它们相距很远,它们不会相互接触,否则我认为它们会重叠,最后绘制的一个将大部分可见。你可以看看。这里的值不是由它们的值绘制的,而是由一个“名称”绘制的,因此完全避免了大小问题。好的,谢谢。最后一个问题是如何将颜色条标题垂直放置。我在SO上看到了另一个帖子,但它不起作用。创建一个新的图形。当然,这是使标题与颜色栏垂直对齐的标准功能。谢谢。我建议你在另一个问题中发布;)否则,与您有相同问题的其他人将无法找到解决方案。谢谢您的回答。它似乎起作用了。如果两个时代之间的差异不规则会发生什么?如果它们相距很远,它们不会相互接触,否则我认为它们会重叠,最后绘制的一个将大部分可见。你可以看看。这里的值不是由它们的值绘制的,而是由一个“名称”绘制的,因此完全避免了大小问题。好的,谢谢。最后一个问题是如何将颜色条标题垂直放置。我在SO上看到了另一个帖子,但它不起作用。创建一个新的图形。当然,这是使标题与颜色栏垂直对齐的标准功能。谢谢。我建议你在另一个问题中发布;)否则,与您有相同问题的其他人将无法找到解决方案