我可以使用Plotly简单显示我的绘图(3D散点图)。我正在尝试实现点击事件功能。当我点击任意一个绘图点时,我想更改其颜色。根据Plotly的官方文档,它并不难:Plotly - click event
我只能看到单击的点(控制台日志)。 有谁知道为什么我不能实时更改颜色?
先谢谢了。这是我的摘录:
模板:
{% extends 'base.html' %}
{% load static %}
{% block css %}
<script src="{% static 'js/plotly-latest.min.js' %}"></script>
{% endblock %}
{% block content %}
<div id="single_plot">
{{ plot_as_div|safe }}
</div>
{% endblock %}
{% block js %}
<script src="{% static 'js/plot_select_markers.js' %}"></script>
{% endblock %}
plot_select_markers.js
$(document).ready(function () {
var plot_div_id = $('#single_plot').children().attr('id');
var plotly_scatter_div = document.getElementById(plot_div_id);
var color_select = '#7b3294';
plotly_scatter_div.on('plotly_click', function (data) {
var pn = '', tn = '', colors = [];
for (var i = 0; i < data.points.length; i++) {
pn = data.points[i].pointNumber;
tn = data.points[i].curveNumber;
colors = data.points[i].data.marker.color;
}
colors[pn] = color_select;
var update = {
'marker': {
color: colors,
size: 7
}
};
Plotly.restyle(plotly_scatter_div, update, [tn]);
});
答案 0 :(得分:0)
我不确定这是否与def cus_gen(batch_size,X,y):
while True:
X,y=shuffle(X,y)
for i in range(len(X)//batch_size):
yield (numpy.array(X[i*batch_size:(i+1)*batch_size]),numpy.array(y[i*batch_size:(i+1)*batch_size]))
optimizer=adam(lr=0.001)
model=Sequential()
model.add(Embedding(input_dim=733,output_dim=60,input_length=12))
model.add(Bidirectional(LSTM(250,return_sequences=True,activation='relu'),merge_mode='concat'))
Dropout(0.4)
model.add(Bidirectional(LSTM(350,return_sequences=True,activation='relu'),merge_mode='concat'))
Dropout(0.4)
model.add(TimeDistributed(Dense(332, activation='sigmoid')))
model.compile(loss='cosine_proximity',optimizer=optimizer,metrics=['acc'])
model.fit_generator(generator=cus_gen(40,X,y),steps_per_epoch=10000,epochs=100)
代码有关,但是从 messageBodyPart = new MimeBodyPart();
String filename = "/home/user/file.txt";
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(filename);
multipart.addBodyPart(messageBodyPart);
// Send the complete message parts
message.setContent(multipart);
开始,我为该问题创建了一个有效的示例。
注意:Django
的{{1}}事件存在问题。使其进入plotly js code
,此问题在以下Github Ticket
中提出,我遵循了他们的临时解决方案,并使代码正常工作。
关于更新对象。
plotly_click
您可以将键定义为3D-charts
,以指示第一个键需要更新为特定值。由于我们以编程方式设置对象的键,因此我将对象属性括在方括号(recursive loop
)中。
还请注意,属性var update = {
["marker.color[" + pn + "]"]: color_select,
["marker.size[" + pn + "]"]: 7
};
和marker.size[0]
不能作为单个属性使用,因为要更新单个点的大小/颜色。因此,我使用了这个简单的模型函数["marker.color[" + pn + "]"]
,该函数将返回一个默认值的数组,其长度为size
的数组。
color
请尝试以下代码,让我知道您的问题是否已解决!
setValue
z properties elements