Description
Bug summary
I'm working on a generative art generator library for python called Samila based on the matplotlib scatter plot. It gets two functions and maps a square space into a arbitrary shape. We want the generated shape to be the same for given functions and given random seed in order to be reproducible.
Recently we were working on functions with complex values and notified that scatter plot output is not the same in different versions on matplotlib.
I wanted to know why is it like this and what's the problem with matplotlib. If this is a bug it could be horrible for matplotlib to plot different figures for a specific code in its different versions.
Code for reproduction
import random
import math
import matplotlib.pyplot as plt
import itertools
def f1(x,y):
return math.cos(x**2 * y)**1.926 - math.floor(x - y)**1.861 - math.floor(y**2 * x)**1.688
def f2(x,y):
return x - y**1.617 - math.ceil(y)**1.477 - abs(x**2 * y) ** 1.647 - math.cos(x * y)**1.668
def float_range(start, stop, step):
while start < stop:
yield float(start)
start += step
data1 = []
data2 = []
range1 = list(float_range(-1*math.pi, math.pi, 0.01))
range_prod = list(itertools.product(range1, range1))
for item in range_prod:
data1.append(f1(item[0], item[1]))
data2.append(f2(item[0], item[1]))
color = (0.159, 0.085, 0.191)
spot_size = 0.01
projection = "polar"
fig = plt.figure()
fig.set_size_inches(10, 10)
ax = fig.add_subplot(111, projection=projection)
ax.scatter(
data2,
data1,
alpha=0.1,
edgecolors=color,
s=spot_size)
ax.set_axis_off()
ax.patch.set_zorder(-1)
ax.add_artist(ax.patch)
plt.show()
Actual outcome
in matplotlib.__version__ == 3.0.3
:
in matplotlib.__version__ == 3.4.3
:
Expected outcome
Same result in different versions.
Operating system
Ubuntu 20.04
Matplotlib Version
3.0.3
and 3.4.3
Python version
3.8.10