绘制来自 pandas DataFrame 的数据,点的颜色取决于列
Posted
技术标签:
【中文标题】绘制来自 pandas DataFrame 的数据,点的颜色取决于列【英文标题】:Plot data from pandas DataFrame, colour of points dependant on a column 【发布时间】:2018-09-15 23:09:57 【问题描述】:我有一个包含 3 列的 pandas DataFrame,如下所示。
col1 value flag
1 0 0
2 0.03915 0
3 0.13 1
我想从这个数据框中创建一个散点图,其中col1
是 x 轴,value
是 y 轴,而我正在努力做的部分是,对于我想要的具有 flag=0
的行这个点的颜色是蓝色的,如果flag=1
我想把这个点染成红色。
是否有一种简单的方法可以检查每行的标志列并相应地为点着色?
【问题讨论】:
【参考方案1】:您可以使用内置的df.plot.scatter()
函数并将flag
列传递给color
参数:
import pandas as pd
idx = [1,2,3]
value = [0., 0.03, 0.13]
flag = [0, 0, 1]
df = pd.DataFrame(dict(idx=idx, value=value, flag=flag))
df.plot.scatter('idx', 'value', c='flag', cmap='RdBu_r')
【讨论】:
【参考方案2】:假设包含给定数据的数据框是df
,这就是你想要的。
您可以根据您的条件 flag
列及其值创建颜色列表。将该颜色列表提供给内置 DataFrame.plot.scatter
函数中的 color
参数。 (您可以找到文档here。)
colors = ['r' if flag==1 else 'b' for flag in df.flag]
df.plot.scatter('col1', 'value', color=colors)
希望这会有所帮助。
【讨论】:
【参考方案3】:您可以将向量传递给散点图,如下所示
import matplotlib.pyplot as plt
df = pd.DataFrame(data = 'value':[0, 0.4, 0.13], 'flag':[0,0,1])
plt.scatter(df['value'], df.index, c=df['flag'])
【讨论】:
以上是关于绘制来自 pandas DataFrame 的数据,点的颜色取决于列的主要内容,如果未能解决你的问题,请参考以下文章
pandas DataFrame“没有要绘制的数字数据”错误
从 pandas dataFrame 调整 seaborn 图