

I'm trying to make 2 scatter plots where the colors of each point
corresponds to the value of a 1d array.
I want to do this so that the colors used in the 2 plots are comparable.
That is, in plot 1 a violet dot means the same value as on plot 2.
I tried the following code. Here values2 is clearly different than values1.
But it appears that the plots are colored with the same colors. And the
colorbar scales are different. What I want is to have the colorbar scales
be the same, and the colors on the plot are different.
So for example, if point #1 on plot 1 has a value of 0.4, and point #1 on
plot 2 has a value of 0.5, the colors used to represent given values on the
2 plots are the same. I believe that without colorbar, just using scatter
with specific c=value, I do get this result. But adding colorbar I think
changes all the colors.
Any suggestions?
import numpy as np
pts = np.random.uniform (0, 1, 100) + 1j*np.random.uniform(0, 1, 100)
values1 = np.random.uniform(0, 1, 100)
#values2 = np.random.uniform(0.2, 1, 100)
values2 = values1 * 0.8 + 0.2
import matplotlib.pyplot as plt
for value in (values1, values2):
fig, ax = plt.subplots(subplot_kw={'aspect': 'equal'})
cmap=plt.get_cmap('plasma')
blah = ax.scatter (pts.real, pts.imag, c=value, s=10)
blah.set_array (value)
fig.colorbar (blah)
plt.show()
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers


This is a similar problem to that of plotting two imshow()'s. You should be able to pass vmin/vmax arguments to scatter, I believe.
Ben
I'm trying to make 2 scatter plots where the colors of each point
corresponds to the value of a 1d array.
I want to do this so that the colors used in the 2 plots are comparable.
That is, in plot 1 a violet dot means the same value as on plot 2.
I tried the following code. Here values2 is clearly different than values1.
But it appears that the plots are colored with the same colors. And the
colorbar scales are different. What I want is to have the colorbar scales
be the same, and the colors on the plot are different.
So for example, if point #1 on plot 1 has a value of 0.4, and point #1 on
plot 2 has a value of 0.5, the colors used to represent given values on the
2 plots are the same. I believe that without colorbar, just using scatter
with specific c=value, I do get this result. But adding colorbar I think
changes all the colors.
Any suggestions?
import numpy as np
pts = np.random.uniform (0, 1, 100) + 1j*np.random.uniform(0, 1, 100)
values1 = np.random.uniform(0, 1, 100)
#values2 = np.random.uniform(0.2, 1, 100)
values2 = values1 * 0.8 + 0.2
import matplotlib.pyplot as plt
for value in (values1, values2):
fig, ax = plt.subplots(subplot_kw={'aspect': 'equal'})
cmap=plt.get_cmap('plasma')
blah = ax.scatter (pts.real, pts.imag, c=value, s=10)
blah.set_array (value)
fig.colorbar (blah)
plt.show()
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers


Maybe I missed something, but wouldn’t just fixing vmin and vmax in the scatter do the job? Regards, Bruno Le 28 mars 2019 16:56:32 GMT+01:00, Neal Becker < [hidden email]> a écrit :
I'm trying to make 2 scatter plots where the colors of each point corresponds to the value of a 1d array.
I want to do this so that the colors used in the 2 plots are comparable. That is, in plot 1 a violet dot means the same value as on plot 2.
I tried the following code. Here values2 is clearly different than values1. But it appears that the plots are colored with the same colors. And the colorbar scales are different. What I want is to have the colorbar scales be the same, and the colors on the plot are different.
So for example, if point #1 on plot 1 has a value of 0.4, and point #1 on plot 2 has a value of 0.5, the colors used to represent given values on the 2 plots are the same. I believe that without colorbar, just using scatter with specific c=value, I do get this result. But adding colorbar I think changes all the colors.
Any suggestions?
import numpy as np pts = np.random.uniform (0, 1, 100) + 1j*np.random.uniform(0, 1, 100) values1 = np.random.uniform(0, 1, 100) #values2 = np.random.uniform(0.2, 1, 100) values2 = values1 * 0.8 + 0.2
import matplotlib.pyplot as plt for value in (values1, values2): fig, ax = plt.subplots(subplot_kw={'aspect': 'equal'}) cmap=plt.get_cmap('plasma') blah = ax.scatter (pts.real, pts.imag, c=value, s=10) blah.set_array (value) fig.colorbar (blah) plt.show() Matplotlibusers mailing list [hidden email] https://mail.python.org/mailman/listinfo/matplotlibusers
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers


Hey Neal,
I modified your example a bit, is that what you want?
import numpy as np import matplotlib.pyplot as plt
pts = np.random.uniform(0, 1, 100) + 1j * np.random.uniform(0, 1, 100)
values1 = np.random.uniform(0, 1, 100) values2 = values1 * 0.1 + 0.2
global_max = np.max([values1.max(), values2.max()]) global_min = np.min([values1.min(), values2.min()])
fig, axes = plt.subplots(ncols=2) for ax, value in zip(axes, [values1, values2]): blah = ax.scatter(pts.real, pts.imag, c=value, s=10, vmin=global_min, vmax=global_max) cbar = fig.colorbar(blah, ax=ax) fig.tight_layout()
I'm trying to make 2 scatter plots where the colors of each point
corresponds to the value of a 1d array.
I want to do this so that the colors used in the 2 plots are comparable.
That is, in plot 1 a violet dot means the same value as on plot 2.
I tried the following code. Here values2 is clearly different than values1.
But it appears that the plots are colored with the same colors. And the
colorbar scales are different. What I want is to have the colorbar scales
be the same, and the colors on the plot are different.
So for example, if point #1 on plot 1 has a value of 0.4, and point #1 on
plot 2 has a value of 0.5, the colors used to represent given values on the
2 plots are the same. I believe that without colorbar, just using scatter
with specific c=value, I do get this result. But adding colorbar I think
changes all the colors.
Any suggestions?
import numpy as np
pts = np.random.uniform (0, 1, 100) + 1j*np.random.uniform(0, 1, 100)
values1 = np.random.uniform(0, 1, 100)
#values2 = np.random.uniform(0.2, 1, 100)
values2 = values1 * 0.8 + 0.2
import matplotlib.pyplot as plt
for value in (values1, values2):
fig, ax = plt.subplots(subplot_kw={'aspect': 'equal'})
cmap=plt.get_cmap('plasma')
blah = ax.scatter (pts.real, pts.imag, c=value, s=10)
blah.set_array (value)
fig.colorbar (blah)
plt.show()
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers
_______________________________________________
Matplotlibusers mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlibusers

