我有两个数据框,如下所示:
test1 = pd.DataFrame({'A':[False, False, False, True], 'B':[False, False, True, False], 'C':[True, False, True, False]})
产生:
A B C
0 False False True
1 False False False
2 False True True
3 True False False
和
test2 = pd.DataFrame({'A':[False, False, False, False], 'B':[True, False, True, False], 'C':[False, False, False, False]})
产生:
A B C
0 False True False
1 False False False
2 False True False
3 False False False
我想在一个图中绘制这些数据框,使得y轴是列名,x轴是索引。我希望在相应值True
的任何地方都有一个黄色点。如果两个数据框中的相应值均为True
,那么我希望有一个红色点。
非常感谢任何帮助。
答案 0 :(得分:2)
我制作图表:x轴表示列索引(A
,B
或C
),y轴表示行索引。那是你想要做的吗?
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
test1 = pd.DataFrame({'A':[False, False, False, True], 'B':[False, False, True, False], 'C':[True, False, True, False]})
test2 = pd.DataFrame({'A':[False, False, False, False], 'B':[True, False, True, False], 'C':[False, False, False, False]})
# Make a matrix whose elements are 0 if both are True, 1 if neither True, else 2.
mat = np.vectorize( lambda a,b: 0 if a and b else 1 if a or b else 2)(test1,test2)
y,x = np.where(mat==0)
plt.plot(x, y, 'ro')
y,x = np.where(mat==1)
plt.plot(x, y, 'yo')
xlabels = test1.columns
plt.ylim(-1,len(test1.index))
plt.xlim(-1,len(xlabels))
plt.xticks(range(len(xlabels)), xlabels)
plt.show()