use*_*224 3 python python-3.x pandas seaborn
我得到了一个如下所示的数据框:
df:
Time of Day Season value
Day Shoulder 30.581606
Day Summer 25.865560
Day Winter 42.644530
Evening Shoulder 39.954759
Evening Summer 32.053458
Evening Winter 53.678297
Morning Shoulder 32.171245
Morning Summer 25.070815
Morning Winter 42.876667
Night Shoulder 22.082042
Night Summer 17.510290
Night Winter 33.262356
Run Code Online (Sandbox Code Playgroud)
我正在使用 seaborn 使用以下代码绘制线图中的值:
g = sns.lineplot(x='Time of Day',y='value',data=df,hue='Season')
Run Code Online (Sandbox Code Playgroud)
它生成以下图形:
该图的问题在于 x 轴的顺序不是所需的顺序。我想将 a 轴值的顺序更改为 ['Morning', 'Day','Evening','Night']。我尝试使用以下命令更改它:
g.set_xticklabels(['Morning','Day','Evening','Night'])
Run Code Online (Sandbox Code Playgroud)
但是这个命令只改变x轴的标签,而不是数据点的顺序。有人能帮我解决这个问题吗?
Time of Dayimport pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
data = {'Time of Day': ['Day', 'Day', 'Day', 'Evening', 'Evening', 'Evening', 'Morning', 'Morning', 'Morning', 'Night', 'Night', 'Night'],
'Season': ['Shoulder', 'Summer', 'Winter', 'Shoulder', 'Summer', 'Winter', 'Shoulder', 'Summer', 'Winter', 'Shoulder', 'Summer', 'Winter'],
'value': [30.581606, 25.865560000000002, 42.644529999999996, 39.954759, 32.053458, 53.678297, 32.171245, 25.070815, 42.876667, 22.082042, 17.510289999999998, 33.262356]}
# create dataframe
df = pd.DataFrame(data)
# set categorical order
df['Time of Day'] = pd.Categorical(df['Time of Day'],
categories=['Morning', 'Day', 'Evening', 'Night'],
ordered=True)
# plot
g = sns.lineplot(x='Time of Day', y='value', data=df, hue='Season')
plt.legend(bbox_to_anchor=(1.04,0.5), loc="center left", borderaxespad=0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1729 次 |
| 最近记录: |