我正在尝试在图表中制作动态数量的下拉菜单,以绘制各种曲线。我之前曾请求帮助来绘制这些数据,并且效果很好。
首先,您需要使用JavaScript创建下拉菜单元素并将其添加到图表中。然后,您可以使用Plotly.js等库来绘制曲线并根据所选的下拉菜单值更新它们。您可以参考此处的示例代码。
现在,我的代码是这样的。
首先,您需要使用JavaScript创建下拉菜单元素并将其添加到图表中。然后,您可以使用Plotly.js等库来绘制曲线并根据所选的下拉菜单值更新它们。您可以参考此处的示例代码。
Needs["PlotLegends`"]
这是一个关于数据的示例(由于数据太长,所以不是实际数字)。
data={{year, H, He, Li, C, O, Si, S},
{0, .5, .1, .01, 0.01, 0.01, 0.001, 0.001},
{100, .45, .1, .01, 0.01, 0.01, 0.001, 0.001},
{200, .40, .1, .01, 0.01, 0.01, 0.001, 0.001},
{300, .35, .1, .01, 0.01, 0.01, 0.001, 0.001}}
compounds变量是化合物数量+1。
compounds=8
现在,我的代码是这样的。
Manipulate[
ListLogLogPlot[
{data[[All, {1, i}]],
data[[All, {1, j}]],
data[[All, {1, k}]]},
PlotLegend -> {data[[1, i]],
data[[1, j]],
data[[1, k]]}
],
{{i, 2, "Compound 1"},Thread[Range[2, compounds] -> Drop[data[[1]], 1]]},
{{j, 3, "Compound 2"},Thread[Range[2, compounds] -> Drop[data[[1]], 1]]},
{{k, 4, "Compound 2"},Thread[Range[2, compounds] -> Drop[data[[1]], 1]]},
ContinuousAction -> False
]
如您所见,我可以通过复制3行(数据、图例和菜单描述)中的每一行来轻松添加化合物,但这很糟糕且效率低下。绘制一组大约需要20秒,因此在这里需要1分钟(我使用的是相当有效的集群)。
是否有解决方案,可以添加一个小菜单或字段,在其中添加要绘制的化合物数量,以便显示正确数量的菜单?我不需要超过7个图,但需要高效...
数字2、4、16是默认值。我可以制作一个带有默认值(2、14、16和其他一些我可能选择的值)的列表,或者它们都可以设置为2。
谢谢