简体   繁体   中英

Scatter plot with infinitesimal point size in Python

Is it possible to do scatter plot in python, having points have minimal size of 1 pixel at given scale? Ie points should not scale as I scale the plot and have size of 1 pixel always.

In pyplot

plt.scatter(d3_transformed[:,0], d3_transformed[:,1], s=1)

I still get fat point like this

在此处输入图片说明

You can change the marker to a point by setting marker='.' , and then further reduce its size by removing the outline using linewidths=0 . Note that markeredgewidth does not work with scatter .

Consider this example. As you can see, the last line of points plotted ( marker='.', s=1, linewidths=0 ) gives the smallest markers:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(1)
x = np.linspace(0, 10, 100)

ax.scatter(x, np.ones_like(x)+0, marker='o', s=1, color='k')
ax.scatter(x, np.ones_like(x)+1, marker='o', s=1, color='k', linewidths=0)
ax.scatter(x, np.ones_like(x)+2, marker='.', s=1, color='k')
ax.scatter(x, np.ones_like(x)+3, marker='.', s=1, color='k', linewidths=0)

plt.show()

在此处输入图片说明

In scatterplot, the points have marker which is a symbol, like circle, and this symbol has also a border. I think the border is on by default. Try to turn off the bored, like set its width to 0.

http://matplotlib.org/api/lines_api.html#matplotlib.lines.Line2D.set_markeredgewidth

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM