В дополнение к [j0] @ joran's , используя базовую функцию plot
с петлей for
, вы также можете использовать base plot
с lapply
:
plot(0,0,xlim = c(-10,10),ylim = c(-10,10),type = "n")
cl <- rainbow(5)
invisible(lapply(1:5, function(i) lines(-10:10,runif(21,-10,10),col = cl[i],type = 'b')))
invisible
просто служит для предотвращения создания lapply
вывода в вашей консоли (поскольку все, что мы хотим, это рекурсия, предоставляемая функцией, а не список). Как вы можете видеть, он дает тот же результат, что и при использовании подхода цикла for
.
Итак, почему lapply
?
Хотя было показано, что lapply
работает быстрее / лучше, чем for
в R (например, см. здесь , хотя см. здесь для экземпляра, где это не так), в этом случае он примерно примерно одинаково:
. Увеличение числа строк до 50000 для подходов lapply
и for
заняло мою систему 46.3
и 46.55
секунд соответственно.
lapply
был чуть быстрее, это было пренебрежимо. Эта разница в скорости может пригодиться при более крупном / более сложном графике, но, если честно, 50000 строк, вероятно, довольно хороший потолок ... Итак, ответ на вопрос «почему lapply
? ": это просто альтернативный подход, который работает одинаково. :)
Заменить
public void printComponent(Graphics g) {
на
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Не используйте JPanel. Просто используйте JLabel с иконкой, тогда вам не нужен специальный код.
См. «Фоновая панель» для получения дополнительной информации, а также решение, которое будет рисовать изображение на JPanel с тремя различными вариантами рисования:
g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
– Lukas Rotter 9 September 2015 в 10:16