Ich benutze Python 3.5 und Matplotlib. Ich habe weniger als einen Monat Erfahrung mit Python, aber ich habe Daten in einer CSV-Datei, die ich grafisch darstellen muss. Es hat nur 3 Spalten: Gewicht (Pfund), Höhe (Zoll), BMI. Es ist here, wenn Sie es sehen wollen. Ich möchte nur ein Höhen-Gewicht-Streudiagramm mit verschiedenen Symbolen und Farben für jede der 4 BMI-Gruppen erstellen (BMI größer als 20, größer als 25, aber kleiner oder gleich 30, größer als 20, aber kleiner oder gleich 25 und weniger als 20).Wie mache ich ein Streudiagramm aus CSV-Daten mit Python und Matplotlib?
Hier ist was ich bisher habe. Ich habe das Gefühl, dass es einen effizienteren Weg gibt, dies zu tun. Jede Hilfe/Ideen würde sehr geschätzt werden!
import numpy as np
import matplotlib.pyplot as plt
file = open('BMIdata.csv','r')
readings = file.readlines()
readings.pop(0)
height = []
weight = []
BMI = []
for reading in readings:
h, w,B = reading.strip('\r\n').split(',')
height.append(h)
weight.append(w)
BMI.append(B)
Die Listen:
`import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
data2 = pd.read_csv('BMIData.csv')
bmi1 = data2[(data2.BMI<20)]
bmi2 = data2[(data2.BMI>20) & (data2.BMI<=25)]
bmi3 = data2[(data2.BMI>25) & (data2.BMI<=30)]
bmi4 = data2[(data2.BMI>30)]
bmi1h = bmi1.height.values
bmi1w = bmi1.weight.values
bmi2h = bmi2.height.values
bmi2w = bmi2.weight.values
bmi3h = bmi3.height.values
bmi3w = bmi3.weight.values
bmi4h = bmi4.height.values
bmi4w = bmi4.weight.values
plt.scatter(bmi1h, bmi1w, color='r', marker='*', label='Less than 20')
plt.scatter(bmi2h, bmi2w, color='b', marker='^', label='20 to 25')
plt.scatter(bmi3h, bmi3w, color='c', marker='x', label='25 to 30')
plt.scatter(bmi4h, bmi4w, color='m', label='Greater than 30')
plt.xlabel('Height (in)')
plt.ylabel('Weight (lb)')
plt.title('BMI Data')
plt.legend()
plt.axis([63,80,100,400])
plt.savefig('BMIplot.png', dpi=300)
plt.show()
`