Sie können plt.scatter
ein c
Argument übergeben, mit dem Sie die Farben auswählen können. Der folgende Code definiert ein colors
Wörterbuch, um Ihre Diamantfarben den Plotfarben zuzuordnen.
import matplotlib.pyplot as plt
import pandas as pd
carat = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30]
price = [100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 600, 600]
color =['D', 'D', 'D', 'E', 'E', 'E', 'F', 'F', 'F', 'G', 'G', 'G',]
df = pd.DataFrame(dict(carat=carat, price=price, color=color))
fig, ax = plt.subplots()
colors = {'D':'red', 'E':'blue', 'F':'green', 'G':'black'}
ax.scatter(df['carat'], df['price'], c=df['color'].apply(lambda x: colors[x]))
plt.show()
df['color'].apply(lambda x: colors[x])
Ordnet die Farben effektiv von "Diamant" bis "Plotten" zu.
(Verzeihen Sie mir, dass ich kein weiteres Beispielbild erstellt habe. Ich denke, 2 ist genug: P)
Mit seaborn
Sie können seaborn
einen Wrapper verwenden matplotlib
, der es standardmäßig hübscher aussehen lässt (eher meinungsbasiert, ich weiß: P), aber auch einige Plotfunktionen hinzufügt.
Hierfür können Sie seaborn.lmplot
mit verwenden fit_reg=False
(was verhindert, dass automatisch eine Regression durchgeführt wird).
Der folgende Code verwendet einen Beispieldatensatz. Durch Auswahl dieser hue='color'
Option weisen Sie seaborn an, Ihren Datenrahmen anhand Ihrer Farben aufzuteilen und dann jeden einzelnen zu zeichnen.
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
carat = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30]
price = [100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 600, 600]
color =['D', 'D', 'D', 'E', 'E', 'E', 'F', 'F', 'F', 'G', 'G', 'G',]
df = pd.DataFrame(dict(carat=carat, price=price, color=color))
sns.lmplot('carat', 'price', data=df, hue='color', fit_reg=False)
plt.show()
Ohne zu seaborn
benutzenpandas.groupby
Wenn Sie Seaborn nicht verwenden möchten, können Sie pandas.groupby
die Farben allein verwenden und sie dann nur mit matplotlib zeichnen. Sie müssen jedoch die Farben manuell zuweisen. Ich habe unten ein Beispiel hinzugefügt:
fig, ax = plt.subplots()
colors = {'D':'red', 'E':'blue', 'F':'green', 'G':'black'}
grouped = df.groupby('color')
for key, group in grouped:
group.plot(ax=ax, kind='scatter', x='carat', y='price', label=key, color=colors[key])
plt.show()
Dieser Code nimmt denselben DataFrame wie oben an und gruppiert ihn dann basierend auf color
. Anschließend werden diese Gruppen durchlaufen und für jede Gruppe geplottet. Um eine Farbe auszuwählen, habe ich ein colors
Wörterbuch erstellt, das die Diamantfarbe (zum Beispiel D
) einer echten Farbe (zum Beispiel red
) zuordnen kann .