python - 将列表绘制为彩色方块 matplotlib
问题描述
我想以xs
与热图相同的方式绘制一组列表。不同之处在于结果必须投影在实际ys
轴上。
xs = [[0, 100.0, 0, 100.0, 0, 100.0, 0, 100.0], [0, 100.0, 0, 100.0, 0, 100.0, 0, 100.0], ...]
ys = [0.00000e+00 0.00000e+00 4.90000e-02 -4.00000e-03 4.30000e-02 2.00000e-02 -8.00000e-03 -1.58000e-01 ...]
列表的每个值xs
都应根据其值表示为不同颜色的正方形(例如,浅蓝色表示 0,深蓝色表示 100)。如果两个xs
点具有相同ys
的 ,则必须绘制最近的值。
ys
我正在尝试在用作 y 轴的 matplotlib 子图上绘制结果。我尝试过使用 seaborn 热图,视觉结果正是我想要的,但我没有设法将其ys
用作我的 y 轴。
编辑:这是我拥有的和想要获得的示例。
我现在使用的是:sns.heatmap(xs,cbar=False,ax=axs[col])
作为axs[col]
应该绘制我的“热图”的子图。
解决方案
如果您考虑使用pandas
DataFrame,那么您可以利用drop_duplicates()
为每个 y 值仅保留一行。然后只需调用sns.heatmap()
过滤后的数据框即可:
ys = [150,150,151,152,153,153,154]
xs = np.random.choice([0,50,100], size=(len(ys),8))
df = pd.DataFrame(xs, index=ys)
df['ys'] = ys
df2 = df.drop_duplicates(subset='ys', keep='last').set_index('ys')
sns.heatmap(df2, cmap='Blues')
推荐阅读
- android - 打开设置后检查用户授予特定权限
- php - 在创建数据 Codeigniter 时更新数据
- java - 如何在 Java 中优化此方法?我得到时间限制超过
- python - 如果满足条件,如何将像素值设置为特定值?
- azure-devops - Azure DevOps Artifacts - 保留策略说明
- python - 如何使用来自 OAuth autherization 的用户的 Salesforce 访问令牌使用 python 通过 CData ODBC 驱动程序访问 Salesforce 数据?
- python - Python dict KeyError 'RFC822' - Gmail 的 IMAPClient
- git - 如何避免在 Jenkins 中构建创建的分支?
- c# - Azure 函数问题
- android - 在 Xamarin.forms 中自定义框架的角半径