the*_*ain 5 python plot bubble-chart seaborn
我正在尝试使用seaborn创建3D点(x,y,z)的彩色气泡图,每个坐标都是[0,255]范围内的整数。我希望轴代表 x 和 y,散点气泡的色调和大小代表 z 坐标。
代码:
import seaborn
seaborn.set()
import pandas
import matplotlib.pyplot
x = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200]
y = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200]
z = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200]
df = pandas.DataFrame(list(zip(x, y, z)), columns =['x', 'y', 'z'])
ax = seaborn.scatterplot(x="x", y="y",
hue="z",
data=df)
matplotlib.pyplot.xlim(0,255)
matplotlib.pyplot.ylim(0,255)
matplotlib.pyplot.show()
Run Code Online (Sandbox Code Playgroud)
几乎让我得到了我想要的:
然而,这使得色调范围基于 z 中的数据。相反,我想根据最小和最大 z 值的范围(如 0,255)设置范围,然后让实际点的颜色相应地映射到该范围(因此,如果一个点的 z 值是 50,那么应映射到由 [0,255] 范围内的值 50 表示的颜色。
我总结的问题:
我在网上仔细查看了许多教程和论坛,但没有找到答案。我不确定我是否使用了正确的术语。我希望我的信息能够传达出去。
遵循@JohanC 使用hue_norm 的建议是解决方案。我首先尝试通过删除 [hue=] 参数并仅使用 [hue_norm=] 参数来实现此目的,该参数根本不产生任何颜色(这是有道理的)。
当然,应该同时使用 [hue=] 和 [hue_norm=] 参数。
import seaborn
seaborn.set()
import pandas
import matplotlib.pyplot
x = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200]
y = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200]
z = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 255]
df = pandas.DataFrame(list(zip(x, y, z, my_sizes)), columns =['x', 'y', 'z'])
ax = seaborn.scatterplot(x="x", y="y",
hue="z",
hue_norm=(0,255), # <------- the solution
data=df)
matplotlib.pyplot.xlim(0,255)
matplotlib.pyplot.ylim(0,255)
matplotlib.pyplot.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12514 次 |
| 最近记录: |