Цветовая схема изменения масштаба Paraview для видимых данных в диапазоне в Python
У меня есть автоматизированный скрипт клипа, который я запускаю, и как его часть я хотел бы иметь и возможность масштабировать цветовую схему для видимых данных в диапазоне - логическое значение.
Я нашел эту команду clipDisplay.SetScalarBarVisibility(renderView1, True)
в Руководстве пользователя Paraview (глава 10.1.2) и помещен в конец функции передачи цвета в сценарии отслеживания paraview для клипа.
Запуск скрипта не вызывает ошибок, но просто не выполняет работу по изменению масштаба цветовой схемы по сравнению с той же операцией, выполняемой в графическом интерфейсе.
Я хочу использовать код повсеместно, поэтому о ручном выборе данных в диапазоне с определением числа не может быть и речи...
редактировать
Используя трассировку, вы получите:
# trace generated using paraview version 5.7.0
#
# To ensure correct image size when batch processing, please search
# for and uncomment the line `# renderView*.ViewSize = [*,*]`
#### import the simple module from the paraview
from paraview.simple import *
#### disable automatic camera reset on 'Show'
paraview.simple._DisableFirstRenderCameraReset()
# get color transfer function/color map for 'p'
pLUT = GetColorTransferFunction('p')
pLUT.AutomaticRescaleRangeMode = "Grow and update on 'Apply'"
pLUT.InterpretValuesAsCategories = 0
pLUT.AnnotationsInitialized = 0
pLUT.ShowCategoricalColorsinDataRangeOnly = 0
pLUT.RescaleOnVisibilityChange = 0
pLUT.EnableOpacityMapping = 0
pLUT.RGBPoints = [-714.7062377929688, 0.231373, 0.298039, 0.752941, -259.51192474365234, 0.865003, 0.865003, 0.865003, 195.68238830566406, 0.705882, 0.0156863, 0.14902]
pLUT.UseLogScale = 0
pLUT.ColorSpace = 'Diverging'
pLUT.UseBelowRangeColor = 0
pLUT.BelowRangeColor = [0.0, 0.0, 0.0]
pLUT.UseAboveRangeColor = 0
pLUT.AboveRangeColor = [0.5, 0.5, 0.5]
pLUT.NanColor = [1.0, 1.0, 0.0]
pLUT.NanOpacity = 1.0
pLUT.Discretize = 1
pLUT.NumberOfTableValues = 256
pLUT.ScalarRangeInitialized = 1.0
pLUT.HSVWrap = 0
pLUT.VectorComponent = 0
pLUT.VectorMode = 'Magnitude'
pLUT.AllowDuplicateScalars = 1
pLUT.Annotations = []
pLUT.ActiveAnnotatedValues = []
pLUT.IndexedColors = []
pLUT.IndexedOpacities = []
# Rescale transfer function
pLUT.RescaleTransferFunction(-413.7960510253906, 192.35369873046875)
# get opacity transfer function/opacity map for 'p'
pPWF = GetOpacityTransferFunction('p')
pPWF.Points = [-714.7062377929688, 0.0, 0.5, 0.0, 195.68238830566406, 1.0, 0.5, 0.0]
pPWF.AllowDuplicateScalars = 1
pPWF.UseLogScale = 0
pPWF.ScalarRangeInitialized = 1
# Rescale transfer function
pPWF.RescaleTransferFunction(-413.7960510253906, 192.35369873046875)
Есть идеи, пожалуйста? Ура
1 ответ
clip1Display.RescaleTransferFunctionToDataRange(False, True)
это та линия, которую вы хотите. Для информации при поиске версии действия интерфейса для Python вы можете использоватьTrace
(Tools/Start Trace
). Он записывает каждое действие из интерфейса и когда вы останавливаетесь (Tools/Stop Trace
) он печатает версию этих действий для Python.
редактировать
Вы не можете легко изменить масштаб до видимого диапазона в python.
Один способ обхода состоит в извлечении видимых данных для получения видимого диапазона и, наконец, применения его к исходной функции передачи данных. Этот макрос делает свое дело
from paraview.simple import *
v=GetActiveView()
source=GetActiveSource()
SelectSurfacePoints(Rectangle=[0, 0, v.ViewSize[0], v.ViewSize[1]])# Or SelectPointsThrough
extractSelection1=ExtractSelection()
# s=Show()
arrayInfo = e.PointData['X'] # replace 'X' by the array you want
r=arrayInfo.GetRange(0)
Delete(extractSelection1)
del extractSelection1
SetActiveSource(source)
ClearSelection()
pLUT = GetColorTransferFunction('X')
pLUT.RescaleTransferFunction(r[0], r[1])