如何解决将标签传递到Plots.jl直方图
我是Julia的新手,想知道如何将标签传递到Plots.jl包中的直方图函数。
using Plots
gr()
histogram(
data[:sentiment_labels],title = "Hstogram of sentiment labels",xlabel = "Sentiment",ylabel = "count",label = ["Negative" "Positive" "Neutral"],fillcolor = [:coral,:dodgerblue,:slategray]
)
解决方法
因此,简单的答案是:由于绘图中只有一个数据系列,因此绘图中只有一个标签-直方图仅绘制一个数据系列,并附加了一个标签。您获得多种颜色但只有一个图例似乎有点不寻常,因此我将解释为什么发生这种情况,因为它对Plots.jl用户来说是有启发性的,并且经常引起混乱,
您正在绘制的条形图获得三种不同的颜色有点巧合。此处发生的是,您正在提供一个单独的color
参数,该参数在直方图中的条形图中循环循环。如果您为histogram
通话提供更多颜色,则可以看到以下内容:
using Plots
sentiment_labels = [fill(-1,200); fill(0,700); fill(1,100)]
histogram(
sentiment_labels,fillcolor = [:coral,:red,:green,:dodgerblue,:slategray]
)
给予:
这是怎么回事?我们提供了五种颜色,事实证明您的直方图每五个增量只有一个小节(在-1、0和1之间有仓,在这些仓中只有零个观测值)。因此,每五个条形都具有相同的颜色,而零条形消失,则最终只能在图中看到一种颜色。
另一种查看方法是拥有比您的情感标签更连续的数据:
cont_data = rand(1_000)
histogram(
cont_data,:slategray]
)
给予:
所以实际上这里只传递了一个颜色参数。 histogram
调用中颜色和标签之间的关键区别在于,一个是行,另一个是列向量:
julia> ["Negative" "Neutral" "Positive"]
1×3 Array{String,2}:
"Negative" "Neutral" "Positive"
julia> [:coral,:slategrey,:dodgerblue]
3-element Array{Symbol,1}:
:coral
:slategrey
:dodgerblue
图将解释其中的第一个适用于三个不同的系列(“负”是第一个系列的标签,“中性”是第二个系列的标签,“正”是第三个系列的标签),而它将第二个解释解释为适用仅用于一个系列(因此:coral
,:slategrey
,:dodgerblue
都是传入的第一个系列的所有颜色。这在Plots.jl中是一个微妙的区别,它经常使人绊倒(包括我在内!)
要获得三个标签,因此应该具有三个要绘制直方图的序列。一种方法是将您的情感标签向量分为三个向量:
histogram(
[filter(x -> x == y,sentiment_labels) for y ∈ -1:1],fillcolor = [:coral :dodgerblue :slategray],label = ["Negative" "Positive" "Neutral"]
)
给予:
尽管我可能会争辩说,在您的情况下,histogram
不是正确的工具-如果您的标签只会变成负数,中性和正数,那么像您一样,简单的条形图也可以不需要直方图提供的自动合并功能。所以我可能会做:
bar(
title = "Count of sentiment labels",xlabel = "Sentiment",ylabel = "count",[-1 0 1],[[sum(sentiment_labels .== x)] for x ∈ -1:1],label = ["Negative" "Positive" "Neutral"],linecolor = [:coral :dodgerblue :slategray],xticks = -1:1
)
获得:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。