как сделать линейные графики с передним планом и фоном? - PullRequest
0 голосов
/ 03 августа 2020

Как вообще вы можете строить линейные графики с несколькими линиями на одном графике, но где каждая линия установлена ​​на задний план, почти как если бы она была трехмерной?

См. Примеры изображений ниже: enter image description here

введите описание изображения здесь

Ответы [ 3 ]

2 голосов
/ 03 августа 2020

Если вы хотите сделать такой график (график хребта) в R, проверьте пакет ggridges. Это покажет вам кучу интересных примеров:

browseVignettes("ggridges")
2 голосов
/ 04 августа 2020

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

library(ggridges)

set.seed(69)

df <- data.frame(x = as.vector(sapply(14:10, function(i) rnorm(30, i, 2))),
                 group = rep(letters[1:5], each = 30))

ggplot(df, aes(x, y = group, fill = group)) + 
  geom_vline(aes(xintercept = 10), size = 2, color = "#5078be") +
  geom_density_ridges(size = 2, aes(color = group)) +
  geom_vline(aes(xintercept = 3), size = 2) +
  scale_fill_manual(values = c("#8f4b4a", "#c08f33", "#e2baba", "#ffe2ae", "#83a8f1")) +
  scale_colour_manual(values = c("#5c1a08", "#8c5b01", "#af8987", "#d2ab83", "#5078be")) +
  theme_void() +
  theme(legend.position = "none")

введите описание изображения здесь

1 голос
/ 03 августа 2020

Вы можете сделать это с помощью оси z. Вы все еще можете настроить дизайн и скрыть оси и так далее, как вам нравится.

from scipy import exp
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits import mplot3d

def gaus(x, a, x0, sigma):
    return a*exp(-(x-x0)**2/(2*sigma**2))

if __name__ == '__main__':
    x = np.array([i for i in range(0, 100)])
    y1 = gaus(x, 1, 50, 5)
    y2 = gaus(x, 1, 45, 12)

    fig = plt.figure()
    ax = plt.axes(projection='3d')
    ax.view_init(-90, 90)

    ax.plot3D(x, y1, 100)
    ax.plot3D(x, y2, 1)
    plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...