当列有一个特定的(离散的)值时,我试图制作一个图形来显示x轴上的时间和y轴上的点。
以下是一些示例数据:
dat = pd.DataFrame({
'time': [0, 15, 30],
'A': [np.nan, np.nan, 'A'],
'B': ['B', 'B', np.nan],
})现在,每当'A‘列显示字母'A’时,我都试图在'A‘列中显示一个点。我试过这个:
(gg.ggplot(dat, gg.aes('time', 'A'))
+ gg.geom_point()
+ gg.scale_y_discrete(name='', limits=list('A'))
)但什么也没出现:链接到图
然后,我改变了情节的y-界限:
(gg.ggplot(dat, gg.aes('time'))
+ gg.geom_point(gg.aes(y='A'))
+ gg.scale_y_discrete(name='', limits=list('ABCD'))
)现在,我想要出现的点:列'A‘显示值'A’在时间30,实际上,有一个点在那里。但非常奇怪的是,图中还显示了'D‘列中的两个点:链接到图
我玩了一些限制和列名,只要限制包括小于4个值,就不会出现任何点;在那之后,我想要显示的点,但是NaN值也会在限制中的最后一个字母的列中被绘制。
有人知道这是怎么回事吗?你能帮我做这件事吗?
发布于 2021-12-15 11:54:20
您需要做的第一件事是重新构造dataframe,以便将变量和值堆叠起来,然后删除丢失的值。
import pandas as pd
import numpy as np
from plotnine import *
df = pd.DataFrame({
'time': [0, 15, 30],
'A': [np.nan, np.nan, 'A'],
'B': ['B', 'B', np.nan],
})
df = pd.melt(df, id_vars=['time'], value_vars=['A', 'B'])
df.dropna(inplace=True)
p = (ggplot(df, aes(x='time', y='value'))
+ theme_classic()
+ geom_point()
+ labs(y=None)
)

https://stackoverflow.com/questions/70298519
复制相似问题