我有以下代码产生下图
import numpy as np
np.random.seed(3)
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame()
df['X'] = list(np.random.randint(100, size=100)) + list(np.random.randint(30, size=100))
df['Y'] = list(np.random.randint(100, size=100)) + list(np.random.randint(30, size=100))
df['Bin'] = df.apply(lambda row: .1 if row['X'] < 30 and row['Y'] < 30 else .9, axis=1)
fig, ax = plt.subplots(figsize=(10,10))
plt.scatter(df['X'], df['Y'])
Run Code Online (Sandbox Code Playgroud)
我使用 hexbins 绘制了数据,如下所示
from matplotlib import cm
fig, ax = plt.subplots(figsize=(10,10))
hexbin = ax.hexbin(df['X'], df['Y'], C=df['Bin'], gridsize=20, cmap= cm.get_cmap('RdYlBu_r'),edgecolors='black')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我想根据六边形覆盖的区域中绘制的点的密度来更改六边形的大小。例如,左下角的六边形(点密集的地方)将比其他地方的六边形(点稀疏的地方)大。有没有办法做到这一点?
编辑:我尝试了这个解决方案,但我不知道如何根据 df['Bin'] 为十六进制着色,或者如何设置最小和最大十六进制大小。
from …Run Code Online (Sandbox Code Playgroud)