Я отредактировал ваш код, и вот то, что вы ожидали, пожалуйста, посмотрите, что я использовал стиль position
, чтобы выровнять его по правому краю, поместив два button
в один div <div class="pushRight">
и добавив стили для этого div
]
body {
margin: 0;
background-color: #222222;
}
.todoContainer {
display: flex;
align-items: center;
outline: none;
border: 0;
border-radius: 0;
border-bottom: 1px dotted #666666;
padding-bottom: 5px;
margin-bottom: 15px;
position: relative;
}
.todoContent {
font-size: 25px;
color: #ffffff;
}
.btnTodoAction {
cursor: pointer;
text-align: center;
text-decoration: none;
outline: none;
width: 40px;
height: 40px;
padding: 8px;
border-radius: 40px;
border: 0;
background: #2a2a2a;
color: #555555;
}
.pushRight{
position: absolute;
right:0
}
.todoIsCompleted>.todoContent {
position: relative;
color: #666666;
}
.todoIsCompleted>.todoContent::before {
position: absolute;
content: "";
left: 0;
top: 50%;
right: 0;
border-top: 2px solid #85bf6b;
}
.todoIsCompleted>.btnToggleTodoState {
color: #85bf6b;
}
<div class="todoContainer">
<button class="btnTodoAction btnToggleTodoState">T</button>
<span class="todoContent">Item 1</span>
<div class="pushRight">
<button class="btnTodoAction">E</button>
<button class="btnTodoAction">D</button>
</div>
</div>
<div class="todoContainer todoIsCompleted">
<button class="btnTodoAction btnToggleTodoState">T</button>
<span class="todoContent">Item 2</span>
<div class="pushRight">
<button class="btnTodoAction">E</button>
<button class="btnTodoAction">D</button>
</div>
</div>
Краткий ответ - «Нет», вы не можете избежать создания кадра данных. GGPlot
требует, чтобы данные были в кадре данных. Если вы используете qplot
, вы можете дать ему отдельные векторы для x и y, но внутри страны, но он все еще создает кадр данных из параметров, которые вы проходите.
Я согласен с предложением Juba - учиться Чтобы использовать функцию Reshape
, или лучше, но в упаковке Reshape
с расплавленным
/ Chast
функции. Как только вы быстро получите данные в длинном формате, создавая удивительные GGPLOT
графиков, становится одним шагом ближе!
Вы можете использовать функцию reshape
для преобразования вашего фрейма данных в «длинный» формат. Может быть, это немного быстрее, чем ваш код?
R> reshape(d, direction="long",varying=list(c("k1","k2")),v.names="k",times=c("k1","k2"))
iter time k id
1.k1 1 k1 0.2 1
2.k1 2 k1 0.6 2
1.k2 1 k2 0.3 1
2.k2 2 k2 0.4 2
Так что просто добавлю к предыдущим ответам. С помощью qplot вы можете сделать
p <- qplot(y=d$k2, x=d$k1)
и затем оттуда построить его, например, с
p + theme_bw()
Но я согласен - расплавление / отливка - это, как правило, путь вперед.