Skip to content

plt.yscale('log') after plt.scatter() behaves unpredictably in this example. #6915

Closed
@davidmikolas

Description

@davidmikolas

As mentioned in this SE question a scatter plot is not autoscaling to include all of the data if plt.yscale('log') is used after plt.scatter(). This happens for the y-axis but not the x-axis in the example, and does not happen for plt.plot().

In an earlier answer by a developer, ax.set_yscale('log') is shown following ax.scatter(), so I am wondering if this may be a bug.

Using matplotlib version 1.5.1 and python 2.7.11

image

import matplotlib.pyplot as plt

X = [0.997, 2.643, 0.354, 0.075, 1.0, 0.03, 2.39, 0.364, 0.221, 0.437]
Y = [15.487507, 2.320735, 0.085742, 0.303032, 1.0, 0.025435, 4.436435,
     0.025435, 0.000503, 2.320735]

plt.figure()

plt.subplot(2,2,1)
plt.scatter(X, Y)
plt.xscale('log')
plt.yscale('log')
plt.title('scatter - scale last')   

plt.subplot(2,2,2)
plt.plot(X, Y)
plt.xscale('log')
plt.yscale('log')
plt.title('plot - scale last')   

plt.subplot(2,2,3)
plt.xscale('log')
plt.yscale('log')
plt.scatter(X, Y)
plt.title('scatter - scale first')   

plt.subplot(2,2,4)
plt.xscale('log')
plt.yscale('log')
plt.plot(X, Y)
plt.title('plot - scale first')   

plt.show()

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions