Python 如何用不同的颜色为每行绘制特定数据帧的切片?
我想用不同的颜色为每一行(基于行索引)绘制Python 如何用不同的颜色为每行绘制特定数据帧的切片?,python,pandas,matplotlib,plot,indexing,Python,Pandas,Matplotlib,Plot,Indexing,我想用不同的颜色为每一行(基于行索引)绘制熊猫数据帧的某些片段 我的数据如下所示: 我已经试着在这个帮助下找到一种方法,但我没能找到——可能是因为缺乏技能 import pandas as pd import numpy as np import matplotlib.pyplot as plt df = pd.read_csv("D:\SOF10.csv" , header=None) df.head() #Slice interested data C = df.iloc[:, 2::
熊猫数据帧的某些片段
我的数据如下所示:
我已经试着在这个帮助下找到一种方法,但我没能找到——可能是因为缺乏技能
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv("D:\SOF10.csv" , header=None)
df.head()
#Slice interested data
C = df.iloc[:, 2::3]
#Plot Temp base on row index colorfully
C.apply(lambda x: plt.scatter(x.index, x, c='g'))
plt.show()
以下是我预期的情节:
我还想知道我是否可以替换每行切片数据的平均值,这些数据在绘图或绘图旁边的图例中包含480个值!是否可以(如下图)计算图例中某个位置的平均值和位移,或者在图表中自己的数据旁边使用小字体的位移
数据样本:这可能是一个近似答案<代码>散射(c=,cmap=
可用于所需的着色
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import itertools
df = pd.DataFrame({'a':[34,22,1,34]})
fig, subplot_axes = plt.subplots(1, 1, figsize=(20, 10)) # width, height
colors = ['red','green','blue','purple']
cmap=matplotlib.colors.ListedColormap(colors)
for col in df.columns:
subplot_axes.scatter(df.index, df[col].values, c=df.index, cmap=cmap, alpha=.9)
这可能是一个近似答案。
scatter(c=,cmap=
可用于所需的着色
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import itertools
df = pd.DataFrame({'a':[34,22,1,34]})
fig, subplot_axes = plt.subplots(1, 1, figsize=(20, 10)) # width, height
colors = ['red','green','blue','purple']
cmap=matplotlib.colors.ListedColormap(colors)
for col in df.columns:
subplot_axes.scatter(df.index, df[col].values, c=df.index, cmap=cmap, alpha=.9)
这使得情节没有传奇
C = df.iloc[:,2::3].stack().reset_index()
C.columns = ['level_0', 'level_1', 'Temperature']
fig, ax = plt.subplots(1,1)
C.plot('level_0', 'Temperature',
ax=ax, kind='scatter',
c='level_0', colormap='tab20',
colorbar=False, legend=True)
ax.set_xlabel('Cycles')
plt.show()
编辑以反映修改后的问题:
stack()
reset_index()
将上面的双级索引重置为level_0
(行),level_1
(列)set\u xlabel
根据需要设置x轴的标签CC = df.iloc[:,2::3]
fig, ax = plt.subplots(1,1, figsize=(16,9))
labels = CC.mean(axis=1)
for i in CC.index:
ax.scatter([i]*len(CC.columns[1:]), CC.iloc[i,1:], label=labels[i])
ax.legend()
ax.set_xlabel('Cycles')
ax.set_ylabel('Temperature')
plt.show()
这使得情节没有传奇
C = df.iloc[:,2::3].stack().reset_index()
C.columns = ['level_0', 'level_1', 'Temperature']
fig, ax = plt.subplots(1,1)
C.plot('level_0', 'Temperature',
ax=ax, kind='scatter',
c='level_0', colormap='tab20',
colorbar=False, legend=True)
ax.set_xlabel('Cycles')
plt.show()
编辑以反映修改后的问题:
stack()
reset_index()
将上面的双级索引重置为level_0
(行),level_1
(列)set\u xlabel
根据需要设置x轴的标签CC = df.iloc[:,2::3]
fig, ax = plt.subplots(1,1, figsize=(16,9))
labels = CC.mean(axis=1)
for i in CC.index:
ax.scatter([i]*len(CC.columns[1:]), CC.iloc[i,1:], label=labels[i])
ax.legend()
ax.set_xlabel('Cycles')
ax.set_ylabel('Temperature')
plt.show()
试着在
c.apply(lambda x:plt.scatter(x.index,x,c='g'))中删除'c='g',
@QuangHoang嗨,我已经做了,我更新了图片,但是可以看到它不是我想要的。这是因为你没有正确地分割/处理数据,而不是因为你将如何绘制它。c=df.iloc[,2::3]
仍然保留切片列的索引。因此所有绘制的序列共享相同的索引。这就是为什么您看到所有点交错而不是分开的原因。@QuangHoang哦,我明白了,那么您的建议是什么?我如何修复它?有什么补救办法吗?尝试在c.apply(lambda x:plt.scatter(x.index,x,c='g')中删除'c='g')
@QuangHoang嗨,我已经更新了图片,但可以看出这不是我想要的。这是因为你没有正确地分割/处理数据,而不是因为你将如何绘制它。C=df.iloc[:,2::3]
仍然保留切片列的索引。因此,所有绘制的系列都共享相同的索引。这就是为什么您看到所有点交错而不是分开的原因。@QuangHoang哦,我明白了,那么您的建议是什么?我如何修复它?有什么补救措施吗?这是按列着色。问题是希望标记按顺序着色列中的位置(索引)。您好,谢谢您的回答。问题是关于访问所需数据或根据行索引打印数据。行已更新为使用df.index中的颜色。@Quan Hoang提供了一个更简洁的答案。您的答案的输出与我的预期结果完全不同,因为它显示彩色列!我刚刚更新了预期结果图片hope它更好地转移了我的思维方式!这是按列着色。问题是要根据标记在列(索引)中的顺序位置来着色。您好,谢谢您的回答。问题是关于访问所需数据或根据行索引打印数据。行已更新为使用df.index中的颜色。@Quan Hoang提供了一个更简洁的答案。您的答案的输出与我的预期结果完全不同,因为它显示彩色列!我刚刚更新了预期结果图片hope它更好地转移了我的思维方式!当我想用不同的颜色绘制每一行时,输出没有达到我的预期结果!我可以请你再次检查输出图片吗?你确定每一行是一种颜色还是每一列是一种颜色吗?当然,每一行先生!我还在帖子中提供了数据样本,你可以绘制它。你回答的结果是与我的期望相去甚远,尽管颜色丰富,x轴不基于从0到40的行索引,但我有点不知道您想要什么。您可以尝试在堆栈()之前删除.t
然后尝试用'level\u 0'
替换'idx'
内部绘图
。我现在无法访问google drive。当我想用不同的颜色绘制每一行时,输出没有达到我的预期结果!我可以请你再次查看输出图片吗?你确定每一行是一种颜色还是每一列是一种颜色?确定每一行吗先生!我还在文章中提供了数据样本,您可以绘制它。您的答案的结果与我的预期相差甚远,尽管颜色鲜艳,x轴不是基于从0到40的行索引。我有点不知道您想要什么。您可以尝试在堆栈()之前删除.t
并尝试将'idx'
内部绘图
替换为'level\u 0'
。我现在无法访问google drive。