Home > Software design >  Matplotlib Scatter Plot Returns Different Plots in Different Versions
Matplotlib Scatter Plot Returns Different Plots in Different Versions

Time:10-29

I'm working on a generative art generator library for python called Samila Art for matplotlib==3.4.3


And if you run the code using matplotlib==3.0.3 you'll have:

Attribute Qt::AA_EnableHighDpiScaling must be set before QCoreApplication is created.
/home/user/.local/lib/python3.8/site-packages/numpy/core/_asarray.py:136: ComplexWarning: Casting complex values to real discards the imaginary part
  return array(a, dtype, copy=False, order=order, subok=True)

Samila Art for matplotlib==3.0.3


[Edit] : I added a example which uses matplotlib directly instead of using it through Samila. If you prefer you can use this script instead of previous one.

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


System Details:

  • OS: Linux - Ubuntu 20.04
  • Python: Python 3.8.10
  • GCC: [GCC 9.3.0]
  • Matplotlib: [3.0.3, 3.4.3]
  • Numpy: 1.19.1

CodePudding user response:

The problem was that matplotlib changes its plotting strategy from 3.0.3 which ignores points with negative radius to 3.4.3 in which they're plotted.

I couldn't find this using enter image description here

while in matplotlib.__version__ == 3.4.3:

enter image description here

  • Related