Я пытаюсь составить динамическое количество выпадающих меню на графике, чтобы построить различное количество кривых.
Я ранее запрашивал помощь в построении этих данных, и это работало хорошо.
Первым делом
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}}
Переменная составов - это число соединений + 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.
Спасибо