python - 标记设置为像素时如何更改图例中的标记大小/比例
问题描述
我用一个非常小的标记散点图数据点(见下面的屏幕截图)。当我使用非常小的标记“,”时,图例很难阅读(示例代码取自此处)。
(Python 3,Jupyter 实验室)
如何增加图例中标记的大小。上述网站上显示的两个版本不起作用:
legend = ax.legend(frameon=True)
for legend_handle in legend.legendHandles:
legend_handle._legmarker.set_markersize(9)
和
ax.legend(markerscale=6)
然而,当标记设置为“.”时,这两种解决方案确实有效。
如何在传奇中展示更大的制造商?
intoli.com的示例代码:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(12)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
for i in range(5):
mean = [np.random.random()*10, np.random.random()*10]
covariance = [ [1 + np.random.random(), np.random.random() - 1], [0, 1 + np.random.random()], ]
covariance[1][0] = covariance[0][1] # must be symmetric
x, y = np.random.multivariate_normal(mean, covariance, 3000).T
plt.plot(x, y, ',', label=f'Cluster {i + 1}')
ax.legend(markerscale=12)
fig.tight_layout()
plt.show()
解决方案
通过将标记大小设置为 1 像素,您可以获得 1 像素大小的标记plot
。这看起来像
plt.plot(x, y, marker='s', markersize=72./fig.dpi, mec="None", ls="None")
上面所做的是将标记设置为正方形,将标记大小设置为 ppi(每英寸点数)除以 dpi(每英寸点数)== 点数 == 像素,并删除线条和边缘。
然后,您在图例中尝试使用的解决方案markerscale
效果很好。
完整示例:
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(12)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
for i in range(5):
mean = [np.random.random()*10, np.random.random()*10]
covariance = [ [1 + np.random.random(), np.random.random() - 1], [0, 1 + np.random.random()], ]
covariance[1][0] = covariance[0][1] # must be symmetric
x, y = np.random.multivariate_normal(mean, covariance, 3000).T
plt.plot(x, y, marker='s', markersize=72./fig.dpi, mec="None", ls="None",
label=f'Cluster {i + 1}')
ax.legend(markerscale=12)
fig.tight_layout()
plt.show()
推荐阅读
- copy - 无法使用 strcpy() 将字符串复制到链表中
- css - 当我在 sass 中使用 BEM 命名约定时,我无法访问父元素
- python-3.x - 在 Networkx 中使用 k-core 获取移除的边
- reactjs - 谷歌地图:限制用户将标记从负载位置移动最多 800 米
- java - ImageIO.write 在 LeptUtils.convertPixToImage 之后不工作
- amazon-web-services - 如何使用会话令牌创建 s3 客户端对象?
- c++ - 使用带递归的霍纳规则评估 sinx
- c# - 如何四舍五入两位小数
- javascript - 如何遍历值列表并将输出导出到不同的谷歌表
- html - Drag and Resize Position:Absolute 突然停止工作。我能做些什么?