Как я устанавливаю перемещение на один цвет (никакой градиент) в моем matlab-графике?

Если вы действительно пытаетесь получить идентификатор (то есть не используете какие-либо другие атрибуты объекта), обычно лучше сформулировать это как .pluck . Это требует меньше времени для создания экземпляра ActiveRecord и заставляет работу запроса лучше использовать индексы вашей базы данных. Пока User#user_name уникален (и я надеюсь на это!), Он будет возвращать массив длины 1.

User.where(user_name: "John").first.&id 
   # SELECT "users".* FROM "users" WHERE "users"."user_name" = "John" 
   # ORDER BY "users" ASC LIMIT 1
   # => 1 or nil

User.where(user_name: "John").pluck(:id).first
   # SELECT "users"."id" FROM "users" WHERE "users"."user_name" = "John"
   # => 1 or nil

К сожалению, find_by и его помощники не работают таким образом с pluck, и оба эти утверждения вместо этого приводят к ошибкам

User.find_by(user_name: "John").pluck(:id)
User.find_by_user_name("John").pluck(:id)

17
задан Glorfindel 13 July 2019 в 16:09
поделиться

3 ответа

Самый легкий способ создать поверхность, которая имеет всего 1 цвет и данное значение прозрачности, состоит в том, чтобы установить свойства 'FaceColor' и 'FaceAlpha' объекта подложки:

hSurface = surf(...your arguments to create the surface object...);
set(hSurface,'FaceColor',[1 0 0],'FaceAlpha',0.5);

Этот пример выбирает поверхностный цвет для красного и прозрачность к 0,5. Можно также установить граничные свойства также (с 'EdgeColor' и 'EdgeAlpha').

26
ответ дан 30 November 2019 в 12:01
поделиться

Мне не ясно, что Вы хотите сделать. Когда Вы говорите один цвет для перемещения, значение точно одного цвета, или Вы подразумеваете желание оттенков серого?

Вот некоторый код, который сделает множество вещей, можно выбрать который строки использовать:

x = rand(1,20);
y = rand(1,20);
z = rand(1,20);

[X,Y] = meshgrid(linspace(0,1,10),linspace(0,1,10));
Z = rand(10)*0.1;

clf
plot3(x,y,z,'.');
hold on
h = surf(X,Y,Z)
hold off

%% This will change the color
colormap(copper)
%% This will remove colordata
set(h, 'cdata',zeros(10))
%% This will make transparent
alpha(0.5)
4
ответ дан 30 November 2019 в 12:01
поделиться

matlabDoug имеет то, в чем Вы нуждаетесь, я думаю. Свойство cdata содержит цветные данные, которые относились к карте цветов оно. При установке его на массив тот же размер, поскольку поверхностные данные, с каждым элементом в том массиве, имеющем то же значение, сделают поверхность одним цветом. С картой цвета по умолчанию устанавливая все в cdata для обнуления сделает поверхностный синий, и установка всего к 1 сделает поверхностный красный. Затем можно играть с альфой для создания этого прозрачным.

1
ответ дан 30 November 2019 в 12:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: