2

Is it possible to do scatter plot in python, having points have minimal size of 1 pixel at given scale? I.e. 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

enter image description here

Dims
  • 47,675
  • 117
  • 331
  • 600

2 Answers2

4

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()

enter image description here

tmdavison
  • 64,360
  • 12
  • 187
  • 165
0

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

Radek Hofman
  • 517
  • 3
  • 12