【发布时间】:2021-01-31 20:00:40
【问题描述】:
我有一个范围从 -0.15 到 0.08 的值列表:
array([-9.28024375e-03, -7.74566792e-03, 6.89222284e-02, 1.98236910e-03,
1.05891798e-02, 7.36737261e-03, 6.25777898e-03, -1.78726642e-02,
-5.06597295e-03, 5.17623104e-02, -1.13474442e-02, 1.06263056e-02,
2.09431952e-03, -1.54730073e-02, -1.93402164e-02, 1.04915526e-02,
2.04725155e-03, 2.65222141e-02, 1.43185909e-02, -3.73984434e-03,
2.62798866e-02, -2.67092615e-02, 3.48239927e-02, 3.08109938e-03,
-9.12865632e-03, 2.46767319e-03, -2.36669926e-02, 2.07367834e-02,
3.06733189e-02, -5.56772675e-03, -2.40482345e-03, -4.24432795e-02,
-3.79769064e-03, 2.51791666e-02, 2.32164137e-02, -1.74955467e-02,
7.47313626e-03, 6.86957861e-03, 1.38965986e-02, 7.68997312e-05,
-4.59857112e-03, 1.37564169e-02, -6.25312715e-03, 1.66797351e-02,
-7.13480355e-03, -2.38543967e-02, 2.48704615e-02, 2.99393285e-02,
-1.17281194e-03, 1.78675678e-03, 8.04761250e-03, -1.50505912e-01,
8.25650062e-02])
这些值中的每一个都对应于句子的特定部分。我试图在条形图中可视化这一点。我希望所有负值的范围从一些橙色 -> 红色,以及一些黄色 -> 绿色或蓝色 -> 深蓝色的正值。我希望这些值的阈值为 0.00。
我尝试使用 Matplotlib 的 DivergingNorm 功能来创建它并将其传递给我的 Seaborn 绘图。不幸的是,它似乎根本不起作用,我得到以下信息:
要创建它,我有以下代码:
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import seaborn as sns
divnorm = colors.DivergingNorm(vmin=df["saliency"].values.min(), vcenter=0, vmax=df["saliency"].values.max())
div_colors = plt.cm.RdYlGn(divnorm(df["saliency"]))
ax = sns.barplot(x='saliency', y='tokens', data=df, palette=div_colors, edgecolor='black')
我不确定我做错了什么,或者我是否应该使用不同的比例,但感谢任何帮助。
编辑:使用 DataFrame 值更新
tokens saliency
0 Go -0.009280
1 to -0.007746
2 Walmart, 0.068922
3 get 0.001982
4 shot. 0.010589
5 Go 0.007367
6 to 0.006258
7 a -0.017873
8 garlic -0.005066
9 festival, 0.051762
10 get -0.011347
11 shot. 0.010626
12 Go 0.002094
13 to -0.015473
14 a -0.019340
15 concert, 0.010492
16 get 0.002047
17 shot. 0.026522
18 Go 0.014319
19 to -0.003740
20 church, 0.026280
21 get -0.026709
22 shot. 0.034824
23 Go 0.003081
24 to -0.009129
25 the 0.002468
26 movies, -0.023667
27 get 0.020737
28 shot. 0.030673
29 Go -0.005568
30 to -0.002405
31 work, -0.042443
32 get -0.003798
33 shot. 0.025179
34 Go 0.023216
35 to -0.017496
36 college, 0.007473
37 get 0.006870
38 shot. 0.013897
39 Go 0.000077
40 to -0.004599
41 school, 0.013756
42 get -0.006253
43 shot. 0.016680
44 Go -0.007135
45 to -0.023854
46 the 0.024870
47 bar, 0.029939
48 get -0.001173
49 shot. 0.001787
50 #ThisIsAmerica 0.008048
51 #ElPaso -0.150506
52 #Dayton 0.082565
【问题讨论】:
-
你能展示一下你的数据框吗? 'token' 列是否包含双精度值?
-
@JohanC 当然,我已经添加了打印数据框的代码。 (我想我刚刚意识到这个问题,你是对的。我有什么办法可以打印这样的双打吗?)
标签: python matplotlib seaborn