我有一个 DataFrame,其中包含几个统计模型的不同估计值和 p 值作为列。
df = pd.DataFrame({'m4_params':np.random.normal(size=3),
'm4_pvalues':np.random.random_sample(3),
'm5_params':np.random.normal(size=3),
'm5_pvalues':np.random.random_sample(3),
'm6_params':np.random.normal(size=3),
'm6_pvalues':np.random.random_sample(3)})
Run Code Online (Sandbox Code Playgroud)
我可以通过转置和绘制为barh:
df[['m4_params','m5_params','m6_params']].T.plot(kind='barh')
Run Code Online (Sandbox Code Playgroud)
但是,我还想通过使用一个简单的函数(如alpha = 1 - pvalue.
目标是使显着性较高的条形更强,而显着性较弱的条形更透明。据我所知,alpha关键字只接受浮点数,这意味着我需要某种方式来访问图中每个条的属性。
这可能是一个简单的问题,但是如何使条形图上的列标签成为斜体,而不是x-axis标签,而是专门的列标签。我到目前为止的代码是
bp = barplot(means, names.arg = c("CON", "TRI"), ylim=c(0,120), ylab="PA", xlab="M")
Run Code Online (Sandbox Code Playgroud) 当我使用 时barplot,如果名称太大,我看不到条的名称。例如:
barplot(as.numeric(c(2, 4, 1, 6)), col = c("lightblue"), main="Barplot",
names.arg=c("This is bar 1...1", "This is bar 1...2",
"This is bar 1...3", "This is bar 1...4"),
xpd=TRUE, las=1, lwd=1, cex.names=0.5)
Run Code Online (Sandbox Code Playgroud)
当我使用时horiz=TRUE,我看不到左边的名字:
barplot(as.numeric(c(2, 4, 1, 6)), col = c("lightblue"), main="Barplot",
names.arg=c("This is \nbar 2...1", "This is bar 2...2",
"This is bar 2...3", "This is bar 2...4"),
xpd=TRUE, las=1, lwd=1, horiz=TRUE, space=1)
Run Code Online (Sandbox Code Playgroud)
在名称中使用换行符(例如“这是 \nbar 2...1”)或减小文本大小,例如cex.names=0.5“解决”问题,但我更愿意添加空格以使名称适合。
有没有能力改变包括情节在内的整个图形的宽度?
如何使用 ggplot2 绘制带有计数标签的“填充”条?
我可以为“堆叠”条形图执行此操作。但我很困惑,否则。
这是使用dplyr和mpg数据集的可重现示例
library(ggplot)
library(dplyr)
mpg_summ <- mpg %>%
group_by(class, drv) %>%
summarise(freq = n()) %>%
ungroup() %>%
mutate(total = sum(freq),
prop = freq/total)
g <- ggplot(mpg_summ, aes(x = class, y = prop, group = drv))
g + geom_col(aes(fill = drv)) +
geom_text(aes(label = freq), position = position_stack(vjust = .5))
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试绘制填充条的计数,则它不起作用
g <- ggplot(mpg_summ, aes(x=class, fill=drv))
g + stat_count(aes(y = (..count..)/sum(..count..)), geom="bar", position="fill") +
scale_y_continuous(labels = percent_format())
Run Code Online (Sandbox Code Playgroud)
此外,如果我尝试:
g <- ggplot(mpg_summ, aes(x=class, fill=drv))
g …Run Code Online (Sandbox Code Playgroud) 我有以下 R 代码,我在其中转换数据,然后按特定列对其进行排序:
df2 <- df %>%
group_by(V2, news) %>%
tally() %>%
complete(news, fill = list(n = 0)) %>%
mutate(percentage = n / sum(n) * 100)
df22 <- df2[order(df2$news, -df2$percentage),]
Run Code Online (Sandbox Code Playgroud)
我想在 ggplot 中应用有序数据“df22”:
ggplot(df22, aes(x = V2, y = percentage, fill = factor(news, labels = c("Read","Otherwise")))) +
geom_bar(stat = "identity", position = "fill", width = .7) +
coord_flip() + guides(fill = guide_legend(title = "Online News")) +
scale_fill_grey(start = .1, end = .6) + xlab("Country") + ylab("Share")
Run Code Online (Sandbox Code Playgroud)
不幸的是,ggplot 仍然返回一个没有订单的情节:
有谁知道我的代码有什么问题?这与使用每个条形图的单个值对条形图进行排序不同,例如在 …
我正在使用一个必须放置在一个小 div 内的 chart-js 条形图,所以我正在寻找一种方法来使 x 轴上的标签水平而不是对角线。关键是为实际条形增加尽可能多的高度,因为现在标签占用了几乎 40% 的可用空间。
这是我的代码:
let options = {
responsive: true,
maintainAspectRatio: false,
scales: {
yAxes: [{
ticks: {
beginAtZero: true
}
}],
xAxes: [{
display: false
}]
}
};
let ctx = document.getElementById('barChartCtx');
let barChart = new Chart(ctx, {
type: 'bar',
data: data,
options: options
});
Run Code Online (Sandbox Code Playgroud)
我暂时禁用了 xAxis 标签。它有效,但理想情况下我希望它们是水平的。想法?
制作 100% 堆积条形图的最简单方法是什么Bokeh?,例如,假设我有以下列
S P
34 65
23 44
12 81
9 23
Run Code Online (Sandbox Code Playgroud)
在excel我可以使这种类型的情节很容易,所以我会得到这样的东西:
但是,我想进行一些交互(例如在悬停时显示值),因此我想在Bokeh. 我是初学者,Bokeh我还没有找到任何类似的例子。那么,最好的方法是什么?
我正在尝试用 IMF 的数据制作一些条形图。我试图用 read.table() 读取 xls 文件:
base <- read.table("http://www.imf.org/external/pubs/ft/weo/2017/02/weodata/WEOOct2017all.xls", header=TRUE, sep="\t", fill=TRUE)
Run Code Online (Sandbox Code Playgroud)
但是,数据保存为列表:
typeof(base)
[1] "list"
Run Code Online (Sandbox Code Playgroud)
而且我不知道如何提取数据来制作条形图。例如,我想为国家“ARG”和 2010-2019 年(excel 中的第 40-49 列)绘制变量“NGDP_RPCH”。
我试过这个,但没有用:
graph <- base[which((base[2]=="ARG")&(base[3]=='NGDP_RPCH')),40:49]
graph
[1] X2010 X2011 X2012 X2013 X2014 X2015 X2016 X2017 X2018 X2019
<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)
我想知道如何将数据保存为数据框,或者如何从列表中提取数据向量,以便我可以运行:
barplot(graph).
Run Code Online (Sandbox Code Playgroud) 我试图在chart.js中放置矩形来制作上下范围/级别,就像在图像中一样
虽然我可以通过在这个例子中画两条线来实现
var ctx = document.querySelector("#myChart").getContext('2d');
Chart.pluginService.register({
afterDraw: function(chart) {
if (typeof chart.config.options.lineAt != 'undefined') {
var lineAt = chart.config.options.lineAt;
var ctxPlugin = chart.chart.ctx;
var xAxe = chart.scales[chart.config.options.scales.xAxes[0].id];
ctxPlugin.strokeStyle = "green";
ctxPlugin.beginPath();
lineAt = 102;
ctxPlugin.moveTo(xAxe.left, lineAt);
ctxPlugin.lineTo(xAxe.right, lineAt);
ctxPlugin.moveTo(xAxe.left, lineAt-33);
ctxPlugin.lineTo(xAxe.right, lineAt-33);
ctxPlugin.stroke();
}
}
});
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Nov","Dec"],
datasets: [{
label: 'Findings',
data: [0,45],
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 1
}]
},
options: …Run Code Online (Sandbox Code Playgroud)我正在尝试使用 ggplot2 在 R 中制作一个分组条形图。我为此使用的代码是:
ggplot(loanData, aes(factor(loanData$saving_status), <Y AXIS ATTRIBUTE>, fill = loanData$class)) + geom_bar(stat="identity", position = "dodge") + scale_fill_brewer(palette = "Set1")
Run Code Online (Sandbox Code Playgroud)
但是,我不知道我应该用什么替换“Y AXIS ATTRIBUTE”以指示图表上Saving_status和class属性值的出现次数。我想我需要的是使用某种方法计算这些出现次数并将结果放在那里?
基本上,我正在寻找的是类似于这个问题的答案,但我的表中没有价值,我可以像在该示例中使用“物种”一样使用它。谢谢