我想在python中做一个雷达图,但我不知道该怎么做.我在网上阅读了一些教程,其中大部分是非常复杂的(绘制多边形,进行计算以放置点,......).
所以我想知道是否有人有一个"简单"的教程.我不想做一些非常特别的事,简单易懂.如果有一个python库可以做到这一点.我读过的所有教程都使用matplotlib,但这很难.我也找到了库"pychardir",但我无法安装它.
我创建了一个雷达图,用于显示多个物种的文化指数 (CI) 随位置的变化。但是,由于物种名称必须以斜体或下划线书写,因此我需要更改标签项使用的默认字体类型。我已经在互联网上搜索了很多天如何做到这一点但没有成功。似乎这个问题之前已经被问过,但没有实质性的答案。如果有任何帮助,我将不胜感激。这是我的数据,这是代码:
library(fmsb)
colors_border=c( rgb(0.2,0.5,0.5,0.9), rgb(0.8,0.2,0.5,0.9) , rgb(0.7,0.5,0.1,0.9))
colors_in=c(rgb(0.2,0.5,0.5,0.3), rgb(0.8,0.2,0.5,0.3) , rgb(0.7,0.5,0.1,0.3))
radarchart( data , axistype=1 , pcol=colors_border, pfcol=colors_in, plwd=2.5, plty=1, cglcol="grey", cglty=1, axislabcol="grey40", caxislabels=seq(0,1,0.25), cglwd=0.8, calcex = 0.8, vlabels = c("A. pubescens", "A. alboviolaceum", "A. angustifolium", "A. melegueta", "C. anisata", "C. giganteus", "L. chevalieri", "M. myristica", "P. guineense", "S. longipedunculata", "T. sanguinea", "U. chamae", "X. aethiopica", "Z. zanthoxyloides"), vlcex=0.8)
legend(x=1.3, y=1.2, legend = rownames(data[-c(1,2),]), bty = "n", pch=20, col=colors_border, text.col = "grey25", cex=0.8, pt.cex=1.5) …Run Code Online (Sandbox Code Playgroud) 我的目标是使用谷歌应用程序脚本的谷歌工作表中的信息创建谷歌文档。
我可以根据谷歌表格中的数据生成雷达图。雷达图如下所示:
问题:当我将图表作为图像获取并将其粘贴到谷歌文档时。看起来一切都错了。看图片和代码。
我的代码:
var chart = sheet.newChart()
.setChartType(Charts.ChartType.RADAR)
.setPosition(8,2,0,0)
.setNumHeaders(1)
.setOption('title', title)
.addRange(sheet.getRange("A1:G1"))
.addRange(sheet.getRange("A2:G2"))
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_ROWS)
.setTransposeRowsAndColumns(true)
.setOption('vAxes',{0: {viewWindow: {min: 0, max: 100}}})
.setOption('series', {0: {lineWidth: 4, color: '#FFA500'}})
.build();
sheet.insertChart(chart);
var image = sheet.getCharts()[0].getBlob().getAs('image/png');
Run Code Online (Sandbox Code Playgroud)
我发现的最新类似帖子是这个:Automatting Radar Chart Generation in Google Doc using Google Apps Script
但那里没有给出答案。希望有人能帮忙。
编辑: 感谢 Tanaike,它现在可以工作了。对于任何想知道的人,这是我用来生成图表并将其插入谷歌文档的脚本。用图表替换文本。
var chart = sheet.newChart()
.setChartType(Charts.ChartType.RADAR)
.setPosition(8,2,0,0)
.setNumHeaders(1)
.setOption('title', title)
.addRange(sheet.getRange("A1:G1"))
.addRange(sheet.getRange("A2:G2"))
.setMergeStrategy(Charts.ChartMergeStrategy.MERGE_ROWS)
.setTransposeRowsAndColumns(true)
.setOption('vAxes',{0: {viewWindow: {min: 0, max: 100}}})
.setOption('series', {0: {lineWidth: 4, color: '#FFA500'}})
.build();
sheet.insertChart(chart); …Run Code Online (Sandbox Code Playgroud) 我想为10行16列的数据帧绘制多个雷达图.特别是我想为数据帧的每一行绘制雷达图,其中列对应于变量.我使用的函数radarchart从fmsb包,但我可以绘制完整行中的图形,我不能在不同的图表它分割.
有没有选择呢?
调用数据框normed,它看起来像以下(值被规范化):
(clust) (v1) (v2) (v3) (v4) (v5) (v6) ...
1 0.00 0.10 0.12 0.23 0.33 1.00
2 0.13 0.80 0.84 0.70 0.60 0.77
3 0.25 0.63 1.00 1.00 0.10 1.00
4 0.38 1.00 0.54 0.67 0.90 0.59
Run Code Online (Sandbox Code Playgroud)
如果我只是编码:
radarchart(normed)
我获得一个图表,每行有一行.
我正在尝试使用Python / Matplotlib创建雷达图,其中可以使用matplotlib的内置动画模块“回放”测量数据。我希望数据点在遍历数据集时沿各自的轴移动。我在读取数据和更新图表时遇到问题,也无法找到一个示例。
我已经附上了一段代码,应该可以使您大致了解我要实现的目标:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from math import pi
class SubplotAnimation(animation.TimedAnimation):
def __init__(self, data):
self.data = data
fig = plt.figure()
ax = fig.add_subplot(111, projection='polar')
# Figure definition
cat = ['A', 'B', 'C', 'D', 'E']
values = [10, 10, 10, 10, 10]
N = len(cat)
x_as = [n / float(N) * 2 * pi for n in range(N)]
# Because our chart will be circular we need to append a copy of
# the …Run Code Online (Sandbox Code Playgroud) 目前我在我的角度项目中使用雷达图(chart.js)。我想更改不同部分的 scaleLineColor,但不知道如何实现此结果:
根据这个新的修复它应该是可能的:https : //github.com/chartjs/Chart.js/pull/2732
我也试过这个:Chart.js (Radar Chart) different scaleLineColor for each scaleLine
但根本没有效果;((我认为是因为它是用旧版本编写的)
我在 Chart.js 中有这个雷达图,它有 5 个标签。标签很长,所以我想在 HTML 中以两行显示它们,但是当我使用“\n”时,它不会生成新行!
这些是我的标签:
labels: ["COMMUNICATION \n SKILL ", "PRODUCT AND PROCESS \n KNOWLEDGE "]
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我试图将“沟通技巧”和“产品和流程知识”都放在两行中,但它在一行中显示了它们!
正确的做法是什么?
更新
标签位于脚本标签中:
var myChart = new Chart(ctx, {
type: 'radar',
data: {
labels: ["COMMUNICATION SKILL ", "PRODUCT AND PROCESS KNOWLEDGE "],
datasets: [{
label: labs,
data: dps,
backgroundColor: [
'rgba(255, 99, 132, 0.2)'
],
borderColor: [
'rgba(255,99,132,1)',
],
borderWidth: 1
},
options: {
maintainAspectRatio: true,
scale: {
ticks:{
beginAtZero: true,
max: 4
}
}
}
});
Run Code Online (Sandbox Code Playgroud) 如何沿每个轴移动标签以使它们都可读?例如,如何将“$156、$158、$160”移出轴?
这篇文章展示了如果您只有一个轴,如何移动这些标签,但是如果像我这样有多个轴,您会怎么做?在 matplotlib 中的极坐标图上移动径向刻度标签
import numpy as np
import pylab as pl
import matplotlib.pyplot as py
class Radar(object):
def __init__(self, fig, titles, labels, rect=None):
if rect is None:
rect = [0.05, 0.05, 0.95, 0.95]
self.n = len(titles)
self.angles = [a if a <=360. else a - 360. for a in np.arange(90, 90+360, 360.0/self.n)]
self.axes = [fig.add_axes(rect, projection="polar", label="axes%d" % i)
for i in range(self.n)]
self.ax = self.axes[0]
self.ax.set_thetagrids(self.angles, labels=titles, fontsize=12, weight="bold", color="black")
for ax in self.axes[1:]:
ax.patch.set_visible(False)
ax.grid("off")
ax.xaxis.set_visible(False) …Run Code Online (Sandbox Code Playgroud) 我正在使用radarchartfromfmsb来制作间谍图。有谁知道怎么把标题变大吗?
这是代码
data=as.data.frame(matrix( sample( 2:20 , 10 , replace=T) , ncol=10))
colnames(data)=c("math" , "english" , "biology" , "music" , "R-coding",
"data-viz" , "french" , "physic", "statistic", "sport" )
data=rbind(rep(20,10) , rep(0,10) , data)
radarchart( data , axistype=1 ,
#custom polygon
pcol=rgb(0.2,0.5,0.5,0.9) , pfcol=rgb(0.2,0.5,0.5,0.5) , plwd=1 ,
#custom the grid
cglcol="gray48", cglty=1.1, axislabcol="gray48", caxislabels=seq(0,1,5), cglwd=0.9,
#custom labels
vlcex=0.8,title=paste("Cluster 1 ")
)
Run Code Online (Sandbox Code Playgroud)
警告:我不想使用ggradar包
我想在仪表板中显示 2 个组件,一个是雷达,另一个是线,所以我有 3 个独立的组件。
当我实现雷达组件时,我开始在雷达组件中遇到此异常。
ERROR NullInjectorError: StaticInjectorError(AppModule)[BaseChartDirective -> ThemeService]:
StaticInjectorError(Platform: core)[BaseChartDirective -> ThemeService]:
NullInjectorError: No provider for ThemeService!
Run Code Online (Sandbox Code Playgroud)
我遵循了此处提供的文档:https : //stackblitz.com/edit/ng2-charts-radar-template?file= src%2Fapp%2Fapp.component.ts ..我不知道是什么导致了这个问题..
radar-chart ×10
chart.js ×3
matplotlib ×3
r ×3
angular ×2
javascript ×2
label ×2
python ×2
animation ×1
fonts ×1
html ×1
italic ×1
ng2-charts ×1
plot ×1
python-3.x ×1
string ×1
styling ×1