Mpld3: 둜그 μŠ€μΌ€μΌμ˜ 잘λͺ»λœ mpld3 ν”Œλ‘œνŒ…

에 λ§Œλ“  2014λ…„ 08μ›” 07일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: mpld3/mpld3

mpld3(v 1.3.1)을 μ‚¬μš©ν•˜μ—¬ 둜그 μŠ€μΌ€μΌλ‘œ ν”Œλ‘œνŒ…ν•˜λŠ” 데 λ¬Έμ œκ°€ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 이 λ¬Έμ œλŠ” stackflow(http://stackoverflow.com/questions/25188903/incorrect-mpld3-plotting-in-log-scale?noredirect=1#comment39225554_25188903)μ—μ„œ λ³΄κ³ λ˜μ—ˆμœΌλ©° λ‹€λ₯Έ μ‚¬λžŒμ΄ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

감사 ν•΄μš”.
-μ‰˜λ˜

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

νŒ¨λ‹ κΈ°λŠ₯은 μΆ• 쀑 ν•˜λ‚˜κ°€ 둜그 척도인 경우 산점도에 λŒ€ν•΄μ„œλ„ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것은 ν”Œλ‘―μ΄ μ•„λ‹Œ 산포에 λŒ€ν•΄μ„œλ§Œ 문제인 것 κ°™μŠ΅λ‹ˆλ‹€. ν•œ 가지 ν•΄κ²° 방법은 λΆ„μ‚°ν˜• λŒ€μ‹  ν”Œλ‘―μ„ μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

ax.plot(x, y, marker='o', linestyle='')

λ³΄λ‹€λŠ”

ax.scatter(x, y)

λ§ˆμ§€λ§‰μœΌλ‘œ μΆ• λ ˆμ΄λΈ”μ΄ μ•½κ°„ μ΄μƒν•©λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
image

λͺ¨λ“  7 λŒ“κΈ€

이것은 λ²„κ·Έμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ μ™œ 이런 일이 μΌμ–΄λ‚˜λŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ 버그λ₯Ό μž¬ν˜„ν•˜λŠ” μ΅œμ†Œ μ½”λ“œ μŠ€λ‹ˆνŽ«μž…λ‹ˆλ‹€.

import matplotlib.pyplot as plt
import mpld3

x = [1, 10, 100, 1000]
y = [1, 10, 100, 1000]
ax = plt.subplot(xscale='log', yscale='log')
ax.scatter(x, y)
mpld3.show()

경둜 μ»¬λ ‰μ…˜μ˜ λ²ˆμ—­/μ˜€ν”„μ…‹ ν”„λ ˆμž„μ›Œν¬μ™€ 관련이 μžˆλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ‹ κ³ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

νŒ¨λ‹ κΈ°λŠ₯은 μΆ• 쀑 ν•˜λ‚˜κ°€ 둜그 척도인 경우 산점도에 λŒ€ν•΄μ„œλ„ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것은 ν”Œλ‘―μ΄ μ•„λ‹Œ 산포에 λŒ€ν•΄μ„œλ§Œ 문제인 것 κ°™μŠ΅λ‹ˆλ‹€. ν•œ 가지 ν•΄κ²° 방법은 λΆ„μ‚°ν˜• λŒ€μ‹  ν”Œλ‘―μ„ μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

ax.plot(x, y, marker='o', linestyle='')

λ³΄λ‹€λŠ”

ax.scatter(x, y)

λ§ˆμ§€λ§‰μœΌλ‘œ μΆ• λ ˆμ΄λΈ”μ΄ μ•½κ°„ μ΄μƒν•©λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
image

ν¬μΈνŠΈμ— 색상을 μ§€μ •ν•˜λ €λŠ” κ²½μš°μ—λŠ” 쒋지 μ•Šμ€ ν•΄κ²° λ°©λ²•μž…λ‹ˆλ‹€.

'markeredgecolor' 및 'markerfacecolor' 인수λ₯Ό μ‚¬μš©ν•˜μ—¬ 포인트 색상을 μ„€μ •ν•  수 μžˆμœΌλ―€λ‘œ μ—¬μ „νžˆ 쒋은 ν•΄κ²° 방법이라고 μƒκ°ν•©λ‹ˆλ‹€. 산포와 λΉ„κ΅ν•˜μ—¬ ν”Œλ‘―μ„ μ‚¬μš©ν•˜μ—¬ ν”Œλ‘― μŠ€νƒ€μΌμ„ 거의 λͺ¨λ‘ λ™μΌν•˜κ²Œ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν”Œλ‘― λ¬Έμ„œ: https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.plot.html

그것을 μžŠμ–΄ 버렸지 만 μ •ν™•νžˆ 무슨 λ§μΈμ§€λŠ” μ•„λ‹™λ‹ˆλ‹€.
1) κ·€ν•˜μ˜ μ œμ•ˆμ— λŒ€ν•œ λΉ„νŒμ΄ μ•„λ‹™λ‹ˆλ‹€. κ·Έ μ œμ•ˆμ€ μ—†λŠ” 것보닀 λ‚«λ‹€.
2) plt.scatter(x, y, c=z) 와 같은 λ‹€λ₯Έ μƒ‰μƒμœΌλ‘œ 각 점을 μƒ‰μΉ ν•˜κ³  colorbar 도 μžˆμŠ΅λ‹ˆλ‹€. plot 이 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ–΄μ¨Œλ“  μ‘λ‹΅ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

쒋은 지적. μ„€λͺ…ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λΆ„λͺ…νžˆ λΆ„μ‚°ν˜•κ³Ό ν”Œλ‘―μ„ λͺ¨λ‘ μ„€κ³„λœ λŒ€λ‘œ μ‚¬μš©ν•  수 있으면 μ΄μƒμ μž…λ‹ˆλ‹€.

ν•΄κ²° 방법은 μ €μ—κ²Œ νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€. :타닀:

mpld3.plugins.PointLabelTooltip λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€μŒκ³Ό 같이 μ‚°μ λ„μ˜ 점을 가리킬 λ•Œ λ ˆμ΄λΈ”μ„ μΆ”κ°€ν•˜λŠ” μ‚¬λžŒλ“€μ„ μœ„ν•΄:

    import mpld3
    fig, ax = plt.subplots()
    ax.set_xscale('log', basex=10) 
    # because of the log axis, the scatter plot will not work fine
    scatter = ax.scatter(x, y)
    tooltips = mpld3.plugins.PointLabelTooltip(scatter, labels=labels)
    mpld3.plugins.connect(fig, tooltips)

scatter λ₯Ό plot 둜만 λ°”κΎΈλ©΄ λ ˆμ΄λΈ”μ΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ μ—¬κΈ°μ—μ„œ 무언가λ₯Ό λ³€κ²½ν•΄μ•Ό ν•©λ‹ˆλ‹€.

    tooltips = mpld3.plugins.PointLabelTooltip(scatter[0], labels=labels)
    # see here ----------------------------------------^

도움이 되기λ₯Ό λ°”λžλ‹ˆλ‹€. :)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰