python散点图期望值_关于python:matplotlib散点图+子图只有一个值的问题

我对matplotlib相当陌生,我想将图和比例尺从0-1创建为输出; 标记的颜色与刻度相同。 我是使用colorbar方法在散点图中完成的,但必须指定另一个imshow来绘制colorbar。 麻烦的是我得到了一个从0到0.5的矩形,其颜色与标记的颜色相同,并且经过数天的尝试,我无法设法擦除它(没有擦除颜色条/比例尺)。

任何帮助将不胜感激!

import matplotlib.pyplot as plt

import matplotlib.cm as cm

data =[0,0.7]

for l in data:

cmap1 = cm.RdYlBu_r(l)

fig = plt.figure(dpi=300)

ax = fig.add_subplot(1,1,1)

ax.grid()

sc = plt.scatter(0, l, s=500, color= cmap1)

cax = ax.imshow([[l]],vmin=0, vmax=1, interpolation='nearest',aspect=5, cmap= plt.cm.RdYlBu_r)

plt.yticks([0,0.5, 1])

plt.xticks([])

plt.colorbar(cax)

axes = plt.gca()

plt.show

这是产生的图像:

编辑:我已经搜索了" matplotlib颜色条以进行散布"和所有变体,但是在应用它时出现了错误,例如" TypeError:您必须首先将set_array用于可映射"。 我想由于这样的事实,我一次只能映射一个值。 抱歉,不是那样的话。 我是matplotlib的新手,我知道我想做点特别的事情。

您可以指定结果图的外观吗? 您有两个数据点[0, 0.7]。 您是否要为每个数据点绘制一个图表,并为每个图表绘制一个颜色条,表示与一个标记相同?

matplotlib颜色条的可能重复散布

实际上,我的想法是为每个数据点制作一个带有颜色条的图。 生成的图像多少有些不带橙色矩形(它会根据数据点而变化)。

您获得的彩色矩形来自imshow图。由于您不想要该矩形,因此请删除imshow图。

下一步将是获取颜色栏。 plt.colorbar期望将ScalarMappable作为第一个参数。因此,最好提供散点图作为参数,

plt.colorbar(sc)。

此时,您可能会收到一条错误消息:"必须首先设置set_array才能映射"。仔细查看散点图(plt.scatter(0, l, s=500, color= cmap1),曾经可以看到确实没有应用任何映射,因为单色是由color参数定义的。要成为有用的ScalarMappable,您需要定义一个数组可以使用c参数将其映射为颜色。因此,不要像尝试使用cmap1 = cm.RdYlBu_r(l)那样手动进行映射,而应将该步骤留给散点图。

sc = plt.scatter(0, l, s=500, c=l, vmin=0, vmax=1,cmap= plt.cm.RdYlBu_r)

现在该图可以工作,但是看起来很糟糕,因此您可能需要应用某些设置,例如长宽比,限制图形大小等。

总的来说,您可能最终会得到如下结果:

import matplotlib.pyplot as plt

data =[0,0.4,0.7,0.9]

for l in data:

fig = plt.figure(figsize=(2,3), dpi=100)

ax = fig.add_subplot(1,1,1, aspect=10)

ax.grid()

sc = plt.scatter(0, l, s=500, c=l, vmin=0, vmax=1,cmap= plt.cm.RdYlBu_r)

plt.xlim([-1,1])

plt.ylim([0,1])

plt.yticks([0,0.5, 1])

plt.xticks([])

plt.colorbar(sc)

plt.subplots_adjust(right=0.7)

plt.show()

恭喜matplotlib金牌! :-)

非常感谢; 答案和特别的解释是有很大帮助的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值