2
respostas

Uma linha amarela para os dois graficos

import numpy as np
import matplotlib.pyplot as plt

url = 'https://raw.githubusercontent.com/allanspadini/numpy/dados/citrus.csv'
dado = np.loadtxt(url, delimiter=',',usecols=np.arange(1,6,1),skiprows=1)
dado_transposto = dado.T
print(dado_transposto)
#Desafio de aula 
# -----------------

laranja = dado[:5000,0]
toranja = dado[5000:,0]
peso_laranja = dado[:5000,1]
peso_toranja = dado[5000:,1]


#FORMULA LARANJA
#------------------------------
y = peso_laranja
x = laranja
n = np.size(peso_laranja)
a = (n*np.sum(x*y) - np.sum(x)*np.sum(y))/(n*np.sum(x**2) - np.sum(x)**2)
b = np.mean(y) - a*np.mean(x)

y_laranja = a * x + b
print(np.linalg.norm(laranja-y))


#FORMULA TORANJA
#------------------------------------
y_toranja = peso_toranja
x_toranja = toranja
n_toranja = np.size(peso_toranja)
a_toranja = (n_toranja*np.sum(x_toranja*y_toranja) - np.sum(x_toranja)*np.sum(y_toranja))/(n_toranja*np.sum(x_toranja**2) - 
np.sum(x_toranja)**2)
print(np.linalg.norm(toranja-y_toranja))

b_toranja = np.mean(y_toranja) - a_toranja*np.mean(x_toranja)
ytoranja = a_toranja * x_toranja + b_toranja


#PLOTAGEM
#------------------------------------
#plt.plot(laranja, peso_laranja, color='red', label='Laranja')
plt.plot(toranja, peso_toranja, color='black', label='Toranja')
plt.plot(toranja,ytoranja, linestyle='dashed', color='yellow', label='linha_toranja')
#plt.plot(laranja, y_laranja, linestyle= 'dashed', color='yellow', label='linha')
plt.legend()
plt.show() 

Reparem que na plotagem, eu comentei duas linhas de codigo que se referiam a laranja, mas quando adiciono os dois a linha amarela fica cortada apenas para um, a nao ser que eu deixe duas linhas amarela, tem como deixar uma linha amarela para os dois graficos , ou so consegue fazer eles individuais

2 respostas
import numpy as np
import matplotlib.pyplot as plt

url = 'https://raw.githubusercontent.com/allanspadini/numpy/dados/citrus.csv'
dado = np.loadtxt(url, delimiter=',',usecols=np.arange(1,6,1),skiprows=1)
dado_transposto = dado.T
print(dado_transposto)
#Desafio de aula 
# -----------------

laranja = dado[:5000,0]
toranja = dado[5000:,0]
peso_laranja = dado[:5000,1]
peso_toranja = dado[5000:,1]


#FORMULA LARANJA
#------------------------------
y = peso_laranja
x = laranja
n = np.size(peso_laranja)
a = (n*np.sum(x*y) - np.sum(x)*np.sum(y))/(n*np.sum(x**2) - np.sum(x)**2)
b = np.mean(y) - a*np.mean(x)

y_laranja = a * x + b
print(np.linalg.norm(laranja-y))


#FORMULA TORANJA
#------------------------------------
y_toranja = peso_toranja
x_toranja = toranja
n_toranja = np.size(peso_toranja)
a_toranja = (n_toranja*np.sum(x_toranja*y_toranja) - np.sum(x_toranja)*np.sum(y_toranja))/(n_toranja*np.sum(x_toranja**2) - 
np.sum(x_toranja)**2)
print(np.linalg.norm(toranja-y_toranja))

b_toranja = np.mean(y_toranja) - a_toranja*np.mean(x_toranja)
ytoranja = a_toranja * x_toranja + b_toranja


#PLOTAGEM
#------------------------------------
#plt.plot(laranja, peso_laranja, color='red', label='Laranja')
plt.plot(toranja, peso_toranja, color='black', label='Toranja')
plt.plot(toranja,ytoranja, linestyle='dashed', color='yellow', label='linha_toranja')
#plt.plot(laranja, y_laranja, linestyle= 'dashed', color='yellow', label='linha')
plt.legend()
plt.show()

Oii, João! Tudo bem?

Sim, uma sugestão é calcular os valores de y combinados para laranja e toranja, depois, plote a linha amarela única baseada nesses valores para os dois gráficos.

import numpy as np
import matplotlib.pyplot as plt

url = 'https://raw.githubusercontent.com/allanspadini/numpy/dados/citrus.csv'
dado = np.loadtxt(url, delimiter=',', usecols=np.arange(1, 6, 1), skiprows=1)

# Separação de dados
laranja = dado[:5000, 0]
toranja = dado[5000:, 0]
peso_laranja = dado[:5000, 1]
peso_toranja = dado[5000:, 1]

# Combinar dados para linha única
x_total = np.concatenate((laranja, toranja))
y_total = np.concatenate((peso_laranja, peso_toranja))

# Calcular a linha de ajuste única
n_total = np.size(y_total)
a_total = (n_total * np.sum(x_total * y_total) - np.sum(x_total) * np.sum(y_total)) / \
          (n_total * np.sum(x_total ** 2) - np.sum(x_total) ** 2)
b_total = np.mean(y_total) - a_total * np.mean(x_total)
y_ajuste = a_total * x_total + b_total

# Plotagem
plt.plot(laranja, peso_laranja, color='red', label='Laranja')
plt.plot(toranja, peso_toranja, color='black', label='Toranja')
plt.plot(x_total, y_ajuste, linestyle='dashed', color='yellow', label='Linha Ajuste Única')

plt.legend()
plt.show()

Neste notebook, tem o teste do código caso queira ver:

Espero ter ajudado.

Bons estudos, Joao!