我尝试使用第三个变量定义颜色来制作彩色散点图。使用以下代码很简单:

plt.scatter(mH, mA, s=1, c=mHc)
plt.colorbar()
plt.show()


但是我没有太多选择来修改情节框架。我正在尝试以下代码制作彩色散点图,同时尝试优化图的框架:

import numpy as np
import math
from matplotlib import rcParams
import matplotlib.pyplot as plt
from matplotlib.ticker import AutoMinorLocator

fig, ax = plt.subplots()

cax = ax.scatter(mH,mA,s=0.5,c=mHc) ### mH, mA, mHC are the dataset
fig.colorbar(cax)
minor_locator1 = AutoMinorLocator(6)
minor_locator2 = AutoMinorLocator(6)
ax.xaxis.set_minor_locator(minor_locator1)
ax.yaxis.set_minor_locator(minor_locator2)
ax.tick_params('both', length=10, width=2, which='major')
ax.tick_params('both', length=5, width=2, which='minor')
ax.set_xlabel(r'$m_H$')
ax.set_ylabel(r'$m_A$')
ax.set_xticks([300,600,900,1200,1500])
ax.set_yticks([300,600,900,1200,1500])

plt.savefig('mH_mA.png',bbox_inches='tight')
plt.show()


但是我得到的情节是黑白的。看起来问题出在标记大小参数上,但我对如何更正它并不了解。我想缩小标记尺寸。任何人都可以给我一些解决此问题的想法。谢谢。python - 使用第三个变量定义颜色进行python散点图绘制时无颜色-LMLPHP

最佳答案

size=0.5很小-可能您只看到标记轮廓。我建议您稍微增加大小,并可能通过edgecolors="none"关闭标记边缘笔触:

import numpy as np
from matplotlib import pyplot as plt

n = 10000
x, y = np.random.randn(2, n)
z = -(x**2 + y**2)**0.5

fig, ax = plt.subplots(1, 1)
ax.scatter(x, y, s=5, c=z, cmap="jet", edgecolors="none")


python - 使用第三个变量定义颜色进行python散点图绘制时无颜色-LMLPHP

您可能还想尝试使用alpha=参数使点半透明:

ax.scatter(x, y, s=20, c=z, alpha=0.1, cmap="jet", edgecolors="none")


python - 使用第三个变量定义颜色进行python散点图绘制时无颜色-LMLPHP

当具有大量重叠点时,可能很难使散点图看起来不错。我很想将数据绘制为2D直方图或等高线图,或者甚至是散点图和等高线图的组合:

density, xe, ye = np.histogram2d(x, y, bins=20, normed=True)
ax.hold(True)
ax.scatter(x, y, s=5, c=z, cmap="jet", edgecolors="none")
ax.contour(0.5*(xe[:-1] + xe[1:]), 0.5*(ye[:-1] + ye[1:]), density,
           colors='k')


python - 使用第三个变量定义颜色进行python散点图绘制时无颜色-LMLPHP

关于python - 使用第三个变量定义颜色进行python散点图绘制时无颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37956351/

10-12 22:19