带有matplotlib但未插入Y记号的图形

ztyzrc3y  于 2023-02-09  发布在  其他
关注(0)|答案(2)|浏览(99)

我需要从一组文件建立一个图表。我的脚本如下和输出。

import sys
import matplotlib.pyplot as plt
import matplotlib.image as img
import pandas as pd
import numpy as np
import glob

df=ReadMultPRYFiles(f"/data/beegfs/projects/XOMG2201-FLD/databases/orient/RL53744.00/RL*RP_15*")
# Define variables
X = df['x num']
Y = df['y num']
z = df['value']

# Plot the x, y, and z coordinates as a scatter plot with color representing z
plt.scatter(X, Y, c=z, cmap='rainbow', s=20, marker = 's',zorder=10)

# Y ticks frequency
plt.yticks(np.arange(min(Y), max(Y), 10))

# Add labels to the x and y axes
plt.xlabel('REC_X')
plt.ylabel('REC_Y')
# display
plt.show()

一切都很好,但我想看到的Y标签只有我实际上有价值,从15264至15808,没有插值或价值以外的范围。

lf5gs5x2

lf5gs5x21#

要使y刻度仅用于现有y值,您可以更改以下行

plt.yticks(np.arange(min(Y), max(Y), 10))

plt.yticks(Y.sort_values().tolist())

性能改进

上面的答案看起来效率有点低,我们只需要Y轴上的唯一值,所以下面的代码可以更有效地完成这个任务。

plt.yticks(np.sort(Y.unique()).tolist())

我们利用了NumPy而不是panda,并且我们只对唯一值执行排序/转换为列表

4jb9z9bj

4jb9z9bj2#

plt.yticks(np.unique(Y))

正如JohanC所建议的那样,工作得又好又快。

相关问题