我可以畫出相應的隱式的曲線:ContourPlot:風格化的輪廓線
ContourPlot[x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1}]
但我不能找到一種方法,根據顏色的點的位置的輪廓線。更確切地說,我想用2種顏色對曲線進行着色,具體取決於是否x²+y²< k。
我看着ColorFunction,但這只是爲了給輪廓線之間的區域着色。 我無法讓ContourStyle接受一個依賴於位置的表達式。
我可以畫出相應的隱式的曲線:ContourPlot:風格化的輪廓線
ContourPlot[x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1}]
但我不能找到一種方法,根據顏色的點的位置的輪廓線。更確切地說,我想用2種顏色對曲線進行着色,具體取決於是否x²+y²< k。
我看着ColorFunction,但這只是爲了給輪廓線之間的區域着色。 我無法讓ContourStyle接受一個依賴於位置的表達式。
你可以使用RegionFunction
以一分爲二的情節:
Show[{
ContourPlot[x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1},
RegionFunction -> Function[{x, y, z}, x^2 + y^2 < .5],
ContourStyle -> Red],
ContourPlot[x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1},
RegionFunction -> Function[{x, y, z}, x^2 + y^2 >= .5],
ContourStyle -> Green]
}]
也許這樣的事情
pl = ContourPlot[x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1}]
points = pl[[1, 1]];
colorf[{x_, y_}] := ColorData["Rainbow"][Rescale[x, {-1, 1}]]
pl /. {Line[a_] :> {Line[a, VertexColors -> colorf /@ points[[a]]]}}
產生
謝謝你這個有用的答案。它使用戶能夠使用連續的顏色,這是對其他答案的很好補充。 – tos
+1好的後期處理。 –
這不能爲您的問題提供直接解決方案,但我相信這是有趣的。
使用我認爲是未公開的格式(即圍繞Line
對象的Function
),可以從ContourPlot
內逐漸着色線條。在內部,這與Heike
所做的相似,但她的解決方案使用頂點號碼來查找匹配的座標,從而允許通過空間位置進行造型,而不是沿着線的位置。
ContourPlot[
x^2 + (2 y)^2 == 1, {x, -1, 1}, {y, -1, 1},
BaseStyle -> {12, Thickness[0.01]},
ContourStyle ->
(Line[#, VertexColors -> ColorData["DeepSeaColors"] /@ [email protected]#] & @@ # &)
]
對於有些不夠熟練,較少的信息是更。浪費時間瀏覽設置輪廓線顏色的方法,直到我偶然看到Roelig編輯的答案。我只需要ContourStyle []。
Show[{ContourPlot[
x^2 + 2 x y Tan[2 # ] - y^2 == 1, {x, -3, 3}, {y, -3.2, 3.2},
ContourStyle -> Green] & /@ Range[-Pi/4, Pi/4, .1]},
Background -> Black]
+1在我意識到自己比我早了整整一個小時就解決了問題後,我刪除了我的解決方案(與您的解決方案几乎完全相同)。 – DavidC