Plot 如何在Julia中绘制一个离散变量与另一个离散变量的对比图?
假设我有一个由两列组成的数据库,第一列对应于受访者的性别,第二列对应于他或她正在研究的领域。 此表来自使用csv库导入csv文件Plot 如何在Julia中绘制一个离散变量与另一个离散变量的对比图?,plot,julia,data-science,Plot,Julia,Data Science,假设我有一个由两列组成的数据库,第一列对应于受访者的性别,第二列对应于他或她正在研究的领域。 此表来自使用csv库导入csv文件 Gender,Field Male,Physics Female,Physics Female,Mathematics Male,Physics Male,Physics Male,Physics Female,Mathematics Female,Mathematics Male,Physics 使用Julia,我想用直方图的形式表示这个数据库,并根据这些字符中的
Gender,Field
Male,Physics
Female,Physics
Female,Mathematics
Male,Physics
Male,Physics
Male,Physics
Female,Mathematics
Female,Mathematics
Male,Physics
使用Julia,我想用直方图的形式表示这个数据库,并根据这些字符中的一个进行分组
我已经搜索了几个库,但由于对该语言不熟悉,我还没有找到一个实用的方法。这里有一种方法可以使用Plots()实现
您参加过本教程吗?当然,我做了,但它没有包含我的问题的任何解决方案。这听起来像是你想要绘制一个条形图,而不是直方图,因为直方图描述定量数据,而你想要表示定性数据(即受试者)。试着在Julia中使用。好吧,你给我的链接不是分组直方图
using CSV
data = CSV.read("data.csv")
using CSV, Plots
using StatsBase: countmap
data = CSV.read("data.csv")
genders = unique(data[!, :Gender])
categories = unique(data[!, :Field])
cm = countmap(Tuple.(eachrow(data)))
# Dict{Tuple{String,String},Int64} with 3 entries:
# ("Female", "Mathematics") => 3
# ("Female", "Physics") => 1
# ("Male", "Physics") => 5
# With Plots you can pass a Matrix to plot multiple series
# each column is a series and each row is a category
y = [get(cm, (g, c), 0) for c in categories, g in genders]
# 2×2 Array{Int64,2}:
# M F
# 5 1 Physics
# 0 3 Mathematics
# We want each label to apply to a series,
# so instead of an n-length Vector, we pass a 1xn Matrix.
labels = permutedims(genders)
# 1×2 Array{String,2}:
# "Male" "Female"
bar(categories, y, labels = labels)