pandas - Pandas:绘制一个数据框,其右侧矩形根据数组的值着色
问题描述
我有一个 100 行 4 列的数据框。我有一个数组(大小 100,1),其中填充了介于 0 和 1 之间的值。我想绘制我的数据框,在其右侧有一个矩形,该矩形将根据特定行的数组值采用颜色(看我画的很差,数组是为了帮助理解我想要的)。我希望颜色是渐变的,其中 0 = 深蓝色,1 = 鲜红色。我知道如何创建颜色图,但这略有不同。您建议我使用哪个功能?
这是我用于绘图的一些代码:
from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
rectangle_values = np.random.rand(100)
plt.figure(figsize=(15,15))
ax = sns.heatmap(df, cbar = None)
解决方案
我的解决方案是使用以19:1之类plot.subplots
的参数创建两个图。width_ratios
在左侧,您像往常一样绘制数据框,在右侧,您绘制矢量。请注意,我正在使用vmin
andvmax
为向量设置所需的边界 (0, 1)。此外,对于请求的颜色,我使用的是MatPlotLib
's RdBu
(红色和蓝色地图),但需要将其反转以满足您的要求。您可以通过值确认颜色,在此运行中生成的随机值是[0.74, 0.96, 0.87, 0.50, 0.26]
.
df = pd.DataFrame(np.random.randint(0,5,size=(5, 4)), columns=list('ABCD'))
rectangle_values = pd.DataFrame(np.random.rand(5), columns=['foo'])
plt.subplots(1, 2, gridspec_kw={'width_ratios': [19, 1]})
plt.subplot(1, 2, 1)
sns.heatmap(df, cbar = None)
plt.subplot(1, 2, 2)
sns.heatmap(rectangle_values, cbar = None, cmap=plt.cm.get_cmap('RdBu').reversed(), vmin=0, vmax=1)
plt.show()
输出是:
推荐阅读
- flutter - 运行flutter pug bet时SDK相关的错误
- android - Webview 卡在加载 android studio - kotlin
- amazon-web-services - AWS“放大推送”失败,“命令失败,退出代码为 1:yarn --production”
- c# - TcpClient 不会接收所有数据
- database - 是否可以将信息从数据库中提取到 laravel 中的 env 文件?
- ruby-on-rails - 如何告诉 ActiveStorage 不要将我的原始文件设为私有?
- java - 尝试从数据库中检索值并使用用户输入进行验证
- scrapy - 从 Spider 移动到 CrawlSpider
- flutter - 关于颤动的标记拖动事件
- r - 贝叶斯网络元分析 (gemtc)