Authorities responded to the shooting in the 3700 block of Eagle Rock Boulevard about 10:30 a.m. The suspect, 18-year-old Mark Martinez, fled the scene on foot immediately after the shooting.
Within a half hour, the Los Angeles Police Department took Martinez into custody. He was turned over to the Los Angeles County Sheriff's Department because the incident happened on a bus.
The 31-year-old shooting victim was taken to Huntington Hospital in stable condition. He was expected to survive.
Authorities shut down northbound traffic on Eagle Rock Boulevard due to the shooting investigation.
Authorities said the victim was protecting his teenage son from the gunman.
Sheriff's department officials said the shooting was the result of an argument between the 16-year-old boy and Martinez.
According to witnesses, Martinez pulled out a gun and started shooting at the boy, but his father stepped in front of the bullets.
"I saw the man lying down on the floor," said Matt Johari who works at a nearby business. "He was twisting and was in a lot of pain."
Martinez was booked for attempted murder.