Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# Dados fornecidos manualmente para cada grupo
data_Deceased = [15.99,15.99,16.54,16.56,16.61,17.68,17.70,17.72,17.94,19.04,19.05,19.47,19.52,19.89,20.84,21.00,21.10,21.30,21.41,22.60,22.87,23.44,23.61,23.82,24.23,24.74,25.38,25.83,25.92,25.95,26.72,26.74,26.76,26.83,27.41,27.48,27.67,27.95,28.78,30.17,31.74,31.85,32.30,33.65,34.97,35.63,36.22,36.24,36.97,38.16,41.88]
data_Survived = [15.29,15.52,15.61,15.86,16.00,16.24,16.37,16.52,17.17,17.40,17.46,17.50,17.64,18.16,18.83,18.95,19.12,19.63,19.79,19.80,19.97,20.03,20.85,21.32,21.53,21.93,22.17,22.54,22.65,22.82,23.08,23.48,23.86,24.07,24.10,24.16,24.85,25.98,26.79,26.85,27.04,28.32,30.33,30.75,32.31,32.94,36.73,37.54,38.48,43.41]

# Criar DataFrame
df_Deceased = pd.DataFrame(data_Deceased, columns=['Values'])
df_Deceased['Death'] = 'Deceased'

df_Survived = pd.DataFrame(data_Survived, columns=['Values'])
df_Survived['Death'] = 'Survived'

# Combinar os DataFrames
df = pd.concat([df_Deceased, df_Survived], ignore_index=True)

# Criar o gráfico violino
plt.figure(figsize=(10, 6))
sns.violinplot(data=df, x='Death', y='Values', inner=None, color='lightblue')

# Adicionar pontos dispersos com transparência
sns.stripplot(data=df, x='Death', y='Values', color='black', alpha=0.5, size=5)

# Adicionar o box plot no centro
sns.boxplot(data=df, x='Death', y='Values', width=0.3, color='white', fliersize=0)

# Configurações do gráfico
plt.title('EAT≥15')
plt.xlabel('Death')
plt.ylabel('EAT(cm²)')

plt.grid(True)
plt.show()
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# Dados fornecidos manualmente para cada grupo
data_Deceased = [15.99,15.99,16.54,16.56,16.61,17.68,17.70,17.72,17.94,19.04,19.05,19.47,19.52,19.89,20.84,21.00,21.10,21.30,21.41,22.60,22.87,23.44,23.61,23.82,24.23,24.74,25.38,25.83,25.92,25.95,26.72,26.74,26.76,26.83,27.41,27.48,27.67,27.95,28.78,30.17,31.74,31.85,32.30,33.65,34.97,35.63,36.22,36.24,36.97,38.16,41.88]
data_Survived = [15.29,15.52,15.61,15.86,16.00,16.24,16.37,16.52,17.17,17.40,17.46,17.50,17.64,18.16,18.83,18.95,19.12,19.63,19.79,19.80,19.97,20.03,20.85,21.32,21.53,21.93,22.17,22.54,22.65,22.82,23.08,23.48,23.86,24.07,24.10,24.16,24.85,25.98,26.79,26.85,27.04,28.32,30.33,30.75,32.31,32.94,36.73,37.54,38.48,43.41]

# Criar DataFrame
df_Deceased = pd.DataFrame(data_Deceased, columns=['Values'])
df_Deceased['Death'] = 'Deceased'

df_Survived = pd.DataFrame(data_Survived, columns=['Values'])
df_Survived['Death'] = 'Survived'

# Combinar os DataFrames
df = pd.concat([df_Deceased, df_Survived], ignore_index=True)

# Criar o gráfico violino
plt.figure(figsize=(10, 6))
sns.violinplot(data=df, x='Death', y='Values', inner=None, color='lightblue')

# Adicionar pontos dispersos com transparência
sns.stripplot(data=df, x='Death', y='Values', color='black', alpha=0.5, size=5)

# Adicionar o box plot no centro
sns.boxplot(data=df, x='Death', y='Values', width=0.3, color='white', fliersize=0)

# Configurações do gráfico
plt.title('EAT≥15')
plt.xlabel('Death')
plt.ylabel('EAT(cm²)')

plt.grid(True)
plt.show()
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# Dados fornecidos manualmente para cada grupo
data_Deceased = [1.60,3.19,3.93,4.90,5.56,5.67,6.36,6.74,6.93,7.01,7.08,7.77,8.12,8.14,8.43,8.65,8.80,9.38,9.49,9.53,9.78,9.83,9.89,10.14,10.58,11.10,11.45,11.59,11.60,11.64,11.95,12.20,12.41,12.67,12.83,13.17,13.18,13.60,13.66,13.74,14.78,14.83]
data_Survived = [1.79,2.75,3.13,3.13,3.40,3.41,3.45,3.63,3.94,4.29,4.53,4.76,5.18,5.37,5.67,5.84,5.96,6.12,6.37,6.50,6.99,7.02,7.04,7.10,7.54,7.56,7.65,8.34,8.39,8.73,8.96,9.10,9.30,9.33,9.71,9.87,10.06,10.10,10.14,10.15,10.30,10.57,10.61,10.82,10.92,11.61,11.71,11.89,12.09,12.60,12.77,13.42,13.47,13.83,13.84,14.15,14.20,14.68,14.75,14.79,14.83]

# Criar DataFrame
df_Deceased = pd.DataFrame(data_Deceased, columns=['Values'])
df_Deceased['Death'] = 'Deceased'

df_Survived = pd.DataFrame(data_Survived, columns=['Values'])
df_Survived['Death'] = 'Survived'

# Combinar os DataFrames
df = pd.concat([df_Deceased, df_Survived], ignore_index=True)

# Criar o gráfico violino
plt.figure(figsize=(10, 6))
sns.violinplot(data=df, x='Death', y='Values', inner=None, color='lightblue')

# Adicionar pontos dispersos com transparência
sns.stripplot(data=df, x='Death', y='Values', color='black', alpha=0.5, size=5)

# Adicionar o box plot no centro
sns.boxplot(data=df, x='Death', y='Values', width=0.3, color='white', fliersize=0)

# Configurações do gráfico
plt.title('EAT<15')
plt.xlabel('Death')
plt.ylabel('EAT(cm²)')

plt.grid(True)
plt.show()
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

# Gerar dados de exemplo
np.random.seed(42)
data = {
    'Values': np.random.uniform(1.79, 14.83, 100),
    'Death': np.random.choice(['Yes', 'No'], 100),
    'EAT': np.random.choice(['EAT<15', 'EAT≥15'], 100)
}

# Criar um DataFrame
df = pd.DataFrame(data)

# Configurar o tamanho da figura para comportar quatro gráficos
plt.figure(figsize=(12, 10))

# Gráfico 1: Death='Yes' e EAT='EAT<15'
plt.subplot(2, 2, 1)
sns.violinplot(data=df[(df['Death'] == 'Yes') & (df['EAT'] == 'EAT<15')], y='Values', inner=None, color='lightblue')
sns.stripplot(data=df[(df['Death'] == 'Yes') & (df['EAT'] == 'EAT<15')], y='Values', color='black', alpha=0.5, size=5)
sns.boxplot(data=df[(df['Death'] == 'Yes') & (df['EAT'] == 'EAT<15')], y='Values', width=0.3, color='white', fliersize=0)
plt.title('Death: Yes, EAT: <15')
plt.xlabel('Densidade')
plt.ylabel('Valores')

# Gráfico 2: Death='No' e EAT='EAT<15'
plt.subplot(2, 2, 2)
sns.violinplot(data=df[(df['Death'] == 'No') & (df['EAT'] == 'EAT<15')], y='Values', inner=None, color='lightblue')
sns.stripplot(data=df[(df['Death'] == 'No') & (df['EAT'] == 'EAT<15')], y='Values', color='black', alpha=0.5, size=5)
sns.boxplot(data=df[(df['Death'] == 'No') & (df['EAT'] == 'EAT<15')], y='Values', width=0.3, color='white', fliersize=0)
plt.title('Death: No, EAT: <15')
plt.xlabel('Densidade')
plt.ylabel('Valores')

# Gráfico 3: Death='Yes' e EAT='EAT≥15'
plt.subplot(2, 2, 3)
sns.violinplot(data=df[(df['Death'] == 'Yes') & (df['EAT'] == 'EAT≥15')], y='Values', inner=None, color='lightblue')
sns.stripplot(data=df[(df['Death'] == 'Yes') & (df['EAT'] == 'EAT≥15')], y='Values', color='black', alpha=0.5, size=5)
sns.boxplot(data=df[(df['Death'] == 'Yes') & (df['EAT'] == 'EAT≥15')], y='Values', width=0.3, color='white', fliersize=0)
plt.title('Death: Yes, EAT: ≥15')
plt.xlabel('Densidade')
plt.ylabel('Valores')

# Gráfico 4: Death='No' e EAT='EAT≥15'
plt.subplot(2, 2, 4)
sns.violinplot(data=df[(df['Death'] == 'No') & (df['EAT'] == 'EAT≥15')], y='Values', inner=None, color='lightblue')
sns.stripplot(data=df[(df['Death'] == 'No') & (df['EAT'] == 'EAT≥15')], y='Values', color='black', alpha=0.5, size=5)
sns.boxplot(data=df[(df['Death'] == 'No') & (df['EAT'] == 'EAT≥15')], y='Values', width=0.3, color='white', fliersize=0)
plt.title('Death: No, EAT: ≥15')
plt.xlabel('Densidade')
plt.ylabel('Valores')

plt.tight_layout()
plt.show()
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# Dados fornecidos
data = [1.79,2.75,3.13,3.13,3.40,3.41,3.45,3.63,3.94,4.29,4.53,4.76,5.18,5.37,
        5.67,5.84,5.96,6.12,6.37,6.50,6.99,7.02,7.04,7.10,7.54,7.56,7.65,8.34,
        8.39,8.73,8.96,9.10,9.30,9.33,9.71,9.87,10.06,10.10,10.14,10.15,10.30,
        10.57,10.61,10.82,10.92,11.61,11.71,11.89,12.09,12.60,12.77,13.42,13.47,
        13.83,13.84,14.15,14.20,14.68,14.75,14.79,14.83]

# Criar um DataFrame
df = pd.DataFrame(data, columns=['Values'])

# Criar o gráfico violino
plt.figure(figsize=(6, 12))
sns.violinplot(data=df, y='Values', inner=None, color='lightblue')

# Adicionar pontos dispersos com transparência
sns.stripplot(data=df, y='Values', color='black', alpha=0.5, size=5)

# Adicionar o box plot no centro
sns.boxplot(data=df, y='Values', width=0.3, color='white', fliersize=0)

# Configurações do gráfico
plt.title('Gráfico Violino com Pontos Dispersos e Box Plot')
plt.ylabel('Valores')
plt.xlabel('Densidade')

plt.grid(True)
plt.show()
Python
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# Dados fornecidos
data = [1.79,2.75,3.13,3.13,3.40,3.41,3.45,3.63,3.94,4.29,4.53,4.76,5.18,5.37,
        5.67,5.84,5.96,6.12,6.37,6.50,6.99,7.02,7.04,7.10,7.54,7.56,7.65,8.34,
        8.39,8.73,8.96,9.10,9.30,9.33,9.71,9.87,10.06,10.10,10.14,10.15,10.30,
        10.57,10.61,10.82,10.92,11.61,11.71,11.89,12.09,12.60,12.77,13.42,13.47,
        13.83,13.84,14.15,14.20,14.68,14.75,14.79,14.83]

# Criar um DataFrame
df = pd.DataFrame(data, columns=['Values'])

# Criar o gráfico violino
plt.figure(figsize=(12, 6))
sns.violinplot(data=df, x='Values', inner=None, color='lightblue')

# Adicionar pontos dispersos com transparência
sns.stripplot(data=df, x='Values', color='black', alpha=0.5, size=5)

# Adicionar o box plot no centro
sns.boxplot(data=df, x='Values', width=0.3, color='white', fliersize=0)

# Configurações do gráfico
plt.title('Gráfico Violino com Pontos Dispersos e Box Plot')
plt.xlabel('Valores')
plt.ylabel('Densidade')

plt.grid(True)
plt.show()
Python
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

def criar_grafico_violino():
    # Solicitar ao usuário para inserir dados
    print("Por favor, insira seus dados.")
    print("Digite os valores separados por vírgula (por exemplo, 1,2,3,4):")
    dados_input = input()
    dados_lista = [float(valor) for valor in dados_input.split(",")]

    # Criar um DataFrame com os dados
    df = pd.DataFrame(dados_lista, columns=["Valores"])
    
    # Criar o gráfico de violino
    plt.figure(figsize=(8, 6))
    sns.violinplot(data=df, y="Valores")
    plt.title("Gráfico de Violino")
    plt.ylabel("Valores")
    plt.xlabel("Distribuição")

    # Mostrar o gráfico
    plt.show()

if __name__ == "__main__":
    criar_grafico_violino()
Por favor, insira seus dados.
Digite os valores separados por vírgula (por exemplo, 1,2,3,4):
Python
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

def calcular_estatisticas(dados):
    """Calcula estatísticas principais: Q1, Q3, mediana, limites inferior e superior."""
    quartis = np.percentile(dados, [25, 50, 75])
    q1, mediana, q3 = quartis
    iqr = q3 - q1  # Intervalo interquartil
    limite_inferior = q1 - 1.5 * iqr
    limite_superior = q3 + 1.5 * iqr
    return q1, mediana, q3, limite_inferior, limite_superior

def criar_grafico_violino(dados):
    # Criar DataFrame a partir dos dados
    df = pd.DataFrame(dados, columns=["Valores"])

    # Calcular estatísticas
    q1, mediana, q3, limite_inferior, limite_superior = calcular_estatisticas(df["Valores"])

    # Configurar o estilo do gráfico
    sns.set(style="whitegrid")
    palette = sns.color_palette("pastel")  # Paleta de cores moderna

    # Configurar o gráfico
    plt.figure(figsize=(12, 8))
    
    # Criar gráfico de violino com bw=0.1 e gradiente moderno
    sns.violinplot(data=df, y="Valores", inner=None, color=palette[1], bw=0.1, linewidth=1.5)

    # Adicionar pontos de dispersão
    sns.stripplot(data=df, y="Valores", color='k', alpha=0.6, jitter=True)

    # Adicionar linhas para os quartis, mediana e limites
    plt.axhline(q1, color='r', linestyle='--', linewidth=1.5, label='1° Quartil (Q1)')
    plt.axhline(mediana, color='b', linestyle='-', linewidth=2, label='Mediana')
    plt.axhline(q3, color='r', linestyle='--', linewidth=1.5, label='3° Quartil (Q3)')
    plt.axhline(limite_inferior, color='g', linestyle=':', linewidth=1.5, label='Limite Inferior')
    plt.axhline(limite_superior, color='g', linestyle=':', linewidth=1.5, label='Limite Superior')

    # Adicionar legenda
    plt.legend()

    # Títulos e rótulos
    plt.title("Gráfico de Violino com Pontos de Dispersão e Estatísticas", fontsize=16, fontweight='bold')
    plt.ylabel("Valores", fontsize=14)
    plt.xlabel("Distribuição", fontsize=14)

    # Ajustar o design
    sns.despine()  # Remove as bordas superior e direita
    plt.grid(True, linestyle='--', alpha=0.7)  # Adiciona uma grade suave

    # Mostrar gráfico
    plt.show()

def ler_dados_do_excel(caminho_arquivo_excel, nome_planilha, coluna_dados):
    # Ler dados do arquivo Excel
    df = pd.read_excel(caminho_arquivo_excel, sheet_name=nome_planilha, usecols=[coluna_dados])
    return df[coluna_dados].dropna().tolist()

if __name__ == "__main__":
    # Entrada de dados manual ou via Excel
    escolha = input("Você quer inserir os dados manualmente ou ler de um arquivo Excel? (manual/excel): ").strip().lower()
    
    if escolha == "manual":
        print("Por favor, insira seus dados separados por vírgula (por exemplo, 1,2,3,4):")
        dados_input = input()
        dados_lista = [float(valor) for valor in dados_input.split(",")]
        criar_grafico_violino(dados_lista)
    elif escolha == "excel":
        caminho_arquivo_excel = input("Por favor, insira o caminho do arquivo Excel: ").strip()
        nome_planilha = input("Por favor, insira o nome da planilha: ").strip()
        coluna_dados = input("Por favor, insira a letra da coluna de dados (por exemplo, A): ").strip()
        dados_lista = ler_dados_do_excel(caminho_arquivo_excel, nome_planilha, coluna_dados)
        criar_grafico_violino(dados_lista)
    else:
        print("Escolha inválida. Por favor, tente novamente.")
Por favor, insira seus dados separados por vírgula (por exemplo, 1,2,3,4):
script.py:30: FutureWarning: 

The `bw` parameter is deprecated in favor of `bw_method`/`bw_adjust`.
Setting `bw_method=0.1`, but please see docs for the new parameters
and update your code. This will become an error in seaborn v0.15.0.

  sns.violinplot(data=df, y="Valores", inner=None, color=palette[1], bw=0.1, linewidth=1.5)