다음 그림을 생성하는 다음 코드가 있습니다.
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'])
아래에 언급 된대로 16 진수를 사용하여 데이터를 그래프로 표시했습니다.
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()
육각형이 덮는 영역에 그려진 점의 밀도를 기준으로 육각형의 크기를 변경하고 싶습니다. 예를 들어 왼쪽 하단의 육각형 (점이 콤팩트 한 위치)은 다른 곳의 육각형 (포인트가 희박한 위치)보다 큽니다. 이것을 할 수있는 방법이 있습니까?
편집 : 이 솔루션을 시도했지만 df [ 'Bin']을 기반으로 16 진수를 채색하는 방법 또는 최소 및 최대 16 진수 크기를 설정하는 방법을 알 수 없습니다.
from matplotlib.collections import PatchCollection
from matplotlib.path import Path
from matplotlib.patches import PathPatch
fig, ax = plt.subplots(figsize=(10,10))
hexbin = ax.hexbin(df['X'], df['Y'], C=df['Bins'], gridsize=20, cmap= cm.get_cmap('RdYlBu_r'),edgecolors='black')
def sized_hexbin(ax,hc):
offsets = hc.get_offsets()
orgpath = hc.get_paths()[0]
verts = orgpath.vertices
values = hc.get_array()
ma = values.max()
patches = []
for offset,val in zip(offsets,values):
v1 = verts*val/ma+offset
path = Path(v1, orgpath.codes)
patch = PathPatch(path)
patches.append(patch)
pc = PatchCollection(patches, cmap=cm.get_cmap('RdYlBu_r'), edgecolors='black')
pc.set_array(values)
ax.add_collection(pc)
hc.remove()
sized_hexbin(ax,hexbin)
plt.show()
1
stackoverflow.com/questions/48844600/…을 보셨습니까 ?
—
plasmon360
@ plasmon360 제안 된 솔루션의 작업으로 게시물을 업데이트했습니다
—
Ethan
사용
—
ImportanceOfBeingErnest
C=df['Bin'],하면 밀도가 아니라 Bin열에 있는 수량이 표시됩니다. 음모가 정확합니다. 당신은 C논쟁을 생략 하고 밀도에 따라 크기를 얻을 수 있습니다 .
@ImportanceOfBeingErnest 알았어. 어떻게 df [ 'Bin']에 의해 육각형을 색칠 할 수 있습니까? 또한 육각형의 최소 크기를 조금 더 크게 변경할 수 있기를 원합니다. 가능합니까?
—
Ethan
크기는
—
ImportanceOfBeingErnest
val/ma코드 의 비율 에 따라 결정됩니다 . 적합한 것으로 교체 할 수 있습니다. 색상은 다음을 통해 설정됩니다 pc.set_array(values). values물론 다른 것을 사용할 수 있습니다 .





