我正在绘制地震数据,并创建了一个包含16个子地块的不同深度切片的图形。每个子地块显示震中的纬度/经度,颜色按震级缩放。我试图做两件事:
调整所有绘图的比例,使其等于选定区域的x和y最小值和最大值。这将便于在各图之间进行比较。(因此所有绘图的范围从xmin到xmax等)
调整大小颜色,使其也代表比例(即颜色代表所有可用点,而不仅仅是特定子图上的点)
我已经看到了很多实现方法,但是我很难将它们应用到代码中的循环中。我使用的数据如下:Data
我在下面发布了我的代码和当前输出
import matplotlib.pyplot as plt
import pandas as pd
eq_df = pd.read_csv(eq_csv)
eq_data = eq_df[['LON', 'LAT', 'DEPTH', 'MAG']]
nbound = max(eq_data.LAT)
sbound = min(eq_data.LAT)
ebound = max(eq_data.LON)
wbound = min(eq_data.LON)
xlimit = (wbound, ebound)
ylimit = (sbound, nbound)
magmin = min(eq_data.MAG)
magmax = max(eq_data.MAG)
for n in list(range(1,17)):
km = eq_data[(eq_data.DEPTH > n - 1) & (eq_data.DEPTH <= n)]
plt.subplot(4, 4, n)
plt.scatter(km["LON"], km['LAT'], s = 10, c = km['MAG'], vmin = magmin, vmax = magmax) #added vmin/vmax to scale my magnitude data
plt.ylim(sbound, nbound) # set y limits of plot
plt.xlim(wbound, ebound) # set x limits of plot
plt.tick_params(axis='both', which='major', labelsize= 6)
plt.subplots_adjust(hspace = 1)
plt.gca().set_title('Depth = ' + str(n - 1) +'km to ' + str(n) + 'km', size = 8) #set title of subplots
plt.suptitle('Magnitude of Events at Different Depth Slices, 1950 to Today')
plt.show()
ETA:解决我的问题的新代码
作为对另一个答案this comment的回应,这里演示了在这个用例中使用
sharex=True
和sharey=True
:对一些事情的解释:
subplots_adjust(wspace=0.05)
减小了子地块之间的水平间距plt.suptitle
不需要(也不应该)在循环中李>ticks = [n % 4 == 0, n > 12]
为每个轴创建一对bool
,然后用于控制绘制哪些记号李>ax.tick_params(left=ticks[0], bottom=ticks[1])
控制每个轴的左勾号和下勾号plt.xlim()
和plt.ylim()
只需在循环之前调用一次多亏了上面的一些帮助和一些扩展的谷歌搜索,最终得到了它
我已经用注释更新了上面的代码,说明了代码的添加位置
要调整我使用的打印轴的限制,请执行以下操作:
为了在所有图中缩放震级数据,我将vmin、vmax添加到以下行:
下面是结果图:![New Figure](https://i.stack.imgur.com/MJ40V.png)
相关问题 更多 >
编程相关推荐