Python 如何为每列绘制线图

Python 如何为每列绘制线图,python,pandas,matplotlib,seaborn,Python,Pandas,Matplotlib,Seaborn,我有一个名为“part_ACT”的数据集,包含各州四年的ACT参与率。以下是其中的一个片段: 索引状态ACT17 ACT18 ACT19 ACT20 0阿拉巴马州100 阿拉斯加1 65 33 38 33 2亚利桑那州62 66 73 71 3阿肯色州100 4加利福尼亚31 27 23 19 5科罗拉多州100 30 27 25 6康涅狄格州31 26 22 19 我试图生成一个线图,其中四个列标题分别位于x轴上,它们的值位于y轴上(1-100)。我更愿意将所有这些线图显示为一个图形 最简单

我有一个名为“part_ACT”的数据集,包含各州四年的ACT参与率。以下是其中的一个片段:

索引状态ACT17 ACT18 ACT19 ACT20
0阿拉巴马州100
阿拉斯加1 65 33 38 33
2亚利桑那州62 66 73 71
3阿肯色州100
4加利福尼亚31 27 23 19
5科罗拉多州100 30 27 25
6康涅狄格州31 26 22 19
我试图生成一个线图,其中四个列标题分别位于x轴上,它们的值位于y轴上(1-100)。我更愿意将所有这些线图显示为一个图形


最简单的方法是什么?我对熊猫、马特普洛特利布、海洋生物或其他什么都很好。多谢

一种解决方案是
熔化df并用
色调进行绘图

import numpy as np
import pandas as pd
import seaborn as sns

df = pd.DataFrame({
    'State': ['A', 'B', 'C', 'D'],
    'x18': sorted(np.random.randint(0, 100, 4)),
    'x19': sorted(np.random.randint(0, 100, 4)),
    'x20': sorted(np.random.randint(0, 100, 4)),
    'x21': sorted(np.random.randint(0, 100, 4)),
})

df_melt = df.melt(id_vars='State', var_name='year')

sns.relplot(
    kind='line',
    data=df_melt,
    x='year', y='value',
    hue='State'
)

  • 创建绘图完全是关于数据框的形状
  • 实现这一点的一种方法是使用
    melt
    将数据帧从宽转换为长,但这不是必需的
  • 主要需求设置为
    “状态”
    作为索引
  • 可以使用
    df
    df.T
    直接生成绘图(是数据帧的转置)
  • OP要求绘制线图,但这是离散数据,可视化离散数据的正确方法是使用条形图,而不是线图
  • pandas v1.2.3
    seaborn v0.11.1
    ,以及
    matplotlib v3.3.4
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
数据={'State':['Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut'],
“ACT17:[100,65,62,100,31,100,31],
《使徒行传18》:[100,33,66,100,27,30,26],
“ACT19”:[100,38,73,100,23,27,22],
‘ACT20’:[100,33,71,100,19,25,19]}
df=pd.DataFrame(数据)
#将State设置为索引-这很重要
df.set_索引('State',inplace=True)
#显示(df)
行动17行动18行动19行动20
陈述
阿拉巴马州100
阿拉斯加65 33 38 33
亚利桑那州62667371
阿肯色州100
加州31272319
科罗拉多州100 302725
康涅狄格州31262219
#显示器(df.T)
阿拉巴马州阿拉巴马州阿拉斯加州亚利桑那州阿肯色州加利福尼亚州科罗拉多州康涅狄格州
ACT17 100 65 62 100 31 100 31
ACT18 100 33 66 100 27 30 26
ACT19 100 38 73 100 23 27 22
ACT20 100 33 71 100 19 25 19
地块1
  • 使用
df.T.绘图()
plt.legend(title='State',bbox_to_anchor=(1.05,1),loc='左上角〕
#去除标签之间的记号-不必要
plt.xticks(刻度=范围(0,len(df.T)))
plt.show()

地块2和地块3
  • kind='bar'
    kind='bar'
  • 条形图更能反映数据的年度变化,并便于各州之间的比较
df.plot(kind='bar')
plt.图例(title='Year',bbox_to_anchor=(1.05,1),loc='左上角')
plt.show()
  • kind='bar'

  • kind='barh'

情节4
  • 使用
  • 将正确地从带有列和索引标签的宽数据框绘制线条图
sns.lineplot(数据=df.T)
plt.legend(title='State',bbox_to_anchor=(1.05,1),loc='左上角〕
plt.show()

这是否回答了您的问题?仅供参考:彻底回答问题非常耗时。如果你的问题得到了解决,那就接受最符合你需要的解决方案来表示感谢。这个✔ 低于▲/▼ 箭头,在答案的左上角。如果出现更好的解决方案,则可以接受新的解决方案。你也可以用以下方式投票决定答案的有用性:▲/▼ 阿罗,如果你有15+的声望。如果解决方案不能回答问题,请留下评论。非常感谢。