Python 以字符串作为x轴打印数据

Python 以字符串作为x轴打印数据,python,matplotlib,scatter-plot,Python,Matplotlib,Scatter Plot,我在pandas数据框中有以下数据集,在x轴上绘制timeOfDay,在y轴上绘制Wattage时遇到问题。基本上,我试图绘制一个散点图(plt.scatter),x轴上有3个点(上午、下午、晚上),以及它们各自的瓦特数,位于时间上方 因此,Morning将有三个数据点位于其上方,午后将有其数据点位于其上方,依此类推 Wattage time_stamp timeOfDay 0 100 2015-02-24 10:00:00 Morning 1

我在pandas数据框中有以下数据集,在x轴上绘制
timeOfDay
,在y轴上绘制
Wattage
时遇到问题。基本上,我试图绘制一个散点图(
plt.scatter
),x轴上有
3个
点(上午、下午、晚上),以及它们各自的
瓦特数
,位于
时间
上方

因此,
Morning
将有三个数据点位于其上方,
午后
将有其数据点位于其上方,依此类推

  Wattage        time_stamp       timeOfDay
0    100      2015-02-24 10:00:00    Morning
1    120      2015-02-24 11:00:00    Morning
2    104      2015-02-24 12:00:00    Morning
3    105      2015-02-24 13:00:00  Afternoon
4    109      2015-02-24 14:00:00  Afternoon
5    120      2015-02-24 15:00:00  Afternoon
6    450      2015-02-24 16:00:00  Afternoon
7    200      2015-02-24 17:00:00    Evening
8    300      2015-02-24 18:00:00    Evening
9    190      2015-02-24 19:00:00    Evening
10   100      2015-02-24 20:00:00    Evening
11   110      2015-02-24 21:00:00    Evening
您可以使用以下方法:


如果您已经有了一个包含数据的数据框,您可以很容易地使用,这使它成为一行:

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

w = [100,123,156,90,40,320,198,174,175,146,238,120]
m = ["morning"]*4+ ["noon"]*4+["evening"]*4
df = pd.DataFrame({"Wattage" : w, "timeOfDay":m})

sns.swarmplot(x="timeOfDay", y="Wattage",  data=df)

plt.show()

可以将
上午
下午
晚上
分别转换为0、1和2。然后将这些数字绘制为X,将瓦数绘制为Y
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

w = [100,123,156,90,40,320,198,174,175,146,238,120]
m = ["morning"]*4+ ["noon"]*4+["evening"]*4
df = pd.DataFrame({"Wattage" : w, "timeOfDay":m})

sns.swarmplot(x="timeOfDay", y="Wattage",  data=df)

plt.show()