2017-05-03 4 views
2

J'utilise le module seaborn pour produire un tracé semblable à l'exemple ci-dessous.Le tracé de la dispersion lexicale est celui de la mer

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 
import seaborn as sns 
location = "/global/scratch/umalmonj/WRF/juris/golden_hourly_manual_obs.csv" 

df = pd.read_csv(location,usecols= ["Year","Month","Day","Time","Weather"],parse_dates=[["Year","Month","Day","Time"]]) 

J'ai une df qui ressemble à:

 Year_Month_Day_Time  Weather 
0 2010-01-01 00:00:00   NaN 
1 2010-01-01 01:00:00   NaN 
2 2010-01-01 02:00:00   NaN 
..  
7 2010-01-01 07:00:00   Snow 
8 2010-01-01 08:00:00   Snow 
9 2010-01-01 09:00:00 Snow Showers 
.. 
18 2010-01-01 18:00:00   NaN 
19 2010-01-01 19:00:00   NaN 
20 2010-01-01 20:00:00   NaN 
...     ...   ... 
2861 2010-04-30 05:00:00 Mainly Clear 
2862 2010-04-30 06:00:00 Mainly Clear 
2863 2010-04-30 07:00:00 Mostly Cloudy 

Je veux créer un stripplot Seaborn avec les différentes catégories de temps quelque chose de similaire à la parcelle suivante. lexical dispersion plot

Également connu sous le nom de tracé de dispersion lexical.

Toute aide serait géniale!

Mon échantillon de données dans un format csv peut être trouvé ici https://www.dropbox.com/s/ulzz5x3rsl2yjd5/sample_data.csv?dl=0

+0

Il serait beaucoup mieux si vous avez ajouté un code à au moins générer un ensemble de données d'exemple ou partagé votre ensemble de données en tant que csv. Comme vous demandez aux personnes potentiellement répondantes de faire beaucoup de travail pour générer les données elles-mêmes avant de vous aider. – mwaskom

+0

Merci @maskaskom, c'est une bonne idée – jdiction

Répondre

2

Vous devez utiliser stripplot. Tout d'abord, vous devez lire correctement la colonne datetime de vos données, puis le tracer:

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

# datetime parser 
dateparse = lambda x: pd.datetime.strptime(x, '%y/%m/%d %H:%M') 
df = pd.read_csv('./sample_data.csv',parse_dates=['DateTime'], date_parser=dateparse) 

# set size of figure 
plt.figure(figsize=(22,6)) 
# use horizontal stripplot with x marker size of 5 
sns.stripplot(y='Weather',x='DateTime', data=df, 
orient='h', marker='X', color='navy', size=5) 
# rotate x tick labels 
plt.xticks(rotation=15) 
# remover borders of plot 
plt.tight_layout() 
plt.show() 

Figure est cliquable Figure is clickable