我有一些关于欧洲国家的数据。我正在尝试使用 world-110m 数据在 Altair / Vega-Lite 中创建可视化。从技术上讲,一切都很好,除了国家的编码边界还包括遥远的领土,产生了一个可怕的地图,如下所示:
这是我的代码:
countries = alt.topo_feature(data.world_110m.url, 'countries')
source = df.copy()
map = alt.Chart(countries).mark_geoshape(
stroke='black'
).encode(
color=alt.Color('SomeStat:Q', sort="descending", scale=alt.Scale(
scheme='inferno', domain=(min_value,max_value)), legend=alt.Legend(title="", tickCount=6))
).transform_lookup(
lookup='id',
from_=alt.LookupData(source, 'CountryId', ['SomeStat', 'CountryName'])
).project(
type='mercator'
)
Run Code Online (Sandbox Code Playgroud)
有没有办法裁剪这张地图或将其居中,以便我只看到欧洲而不是世界各地的偏远地区?
或者,我是否应该使用更好的仅包含欧洲的公共数据集?
嘿,我在 Vue 中使用 d3 图表时遇到问题。除了更新数据之外,一切都加载正常。
我使用 props 来传递数据,当数据更改我的图表而不是更新时,它会在当前图表下方创建另一个图表。
我想要做的是保留当前图表并在数据变化时仅更新条形图
<script>
export default {
props: {
arr: {
type: Array
},
colors: {
type: Array
}
},
watch: {
arr: {
immediate: true,
handler(val) {
setTimeout(() => {
this.barCharts(val)
}, 100);
}
}
},
methods: {
barCharts(data) {
let margin = { top: 40, right: 20, bottom: 50, left: 60 };
let width = 650
let height = 240;
let color = d3.scaleOrdinal().range(this.colors);
let t = d3.transition().duration(750);
let g = d3 …Run Code Online (Sandbox Code Playgroud) 如何使用 将本地图像文件作为刻度标签和国旗下的国家/地区名称ggplot2?
我想实现这样的目标:
数据如下:
countries = c("Norway", "Spain", "Germany", "Canada", "China")
values = c(10, 20, 30, 22, 19)
Run Code Online (Sandbox Code Playgroud)
提前致谢!
现在我可以对所有条形应用相同的渐变,但我需要根据值对每个条形应用线性渐变颜色。即第一条具有从颜色1到颜色2的渐变,第二条可以是从颜色1到颜色3的渐变。我已浏览文档但找不到必要的信息。
我有一个这样的数据集 -
我想重塑数据框架以进行分析 -
我浏览了用于重塑数据框的 pandas 文档,发现了 2 个函数
stack(),melt()但文档似乎不足以满足我的意图。我需要帮助。
这是我尝试过的代码,
data.melt(id_vars=['country','Lat','Long_'])
# I want the columns: country,Lat,Long as it is and melt
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-22-68d10347ddd7> in <module>
1 data.melt(id_vars=['country','Lat','Long_'])
----> 2 data.stack(1)
~\anaconda3\lib\site-packages\pandas\core\frame.py in stack(self, level, dropna)
6999 return stack_multiple(self, level, dropna=dropna)
7000 else:
-> 7001 return stack(self, level, dropna=dropna)
7002
7003 def explode(
~\anaconda3\lib\site-packages\pandas\core\reshape\reshape.py in stack(frame, level, dropna)
489
490 # Will also convert negative level …Run Code Online (Sandbox Code Playgroud) 语境
我目前正在创建一个数据可视化网络应用程序。我正在使用 Plotly 创建时间序列。我对传说有疑问。
我希望图例保留在底部,因为数据的标签很长,因此会干扰数据的整体尺寸。我选择的方向是水平的。
但当我添加更多数据时,图例会向上移动而不是保持在固定位置,以便可以向下添加新数据。相反,随着新数据添加到图表中,整个图例都会上升。
我的代码如下:
plotly_fig = px.line(data_frame=dataframe_cols1,x=dataframe_cols1.index,y=Columns_select1,
width=780, height=730) # Get data from the dataframe with selected columns, choose the x axis as the index of the dataframe, y axis is the data that will be multiselected
# Legend settings
plotly_fig.update_layout(showlegend=True)
plotly_fig.update_layout(legend=dict(
orientation = "h",
yanchor="bottom",
y=-.50,
xanchor="right",
x=1
))
Run Code Online (Sandbox Code Playgroud)
问题
添加新数据时如何防止图例向上移动?换句话说,如何将图例固定在其位置以防止其与图表“混合”?
这些方框代表连续变量在组内的分布;红色圆圈是显示所有实际观察结果的点。到目前为止,一切都很好。geom_boxplot如果用+geom_point来满足群体审美的话,这会很简单。
这里有两个曲折:
一些背景信息:该图显示了产品的使用情况(Y 轴)与允许的使用情况(X 轴)。X 轴组是互斥的、离散的层,本质上是一个无限的、连续的使用变量。EG、1-4、5-9、10-20 等。从视觉角度来看,在这些组中绘制连续图对我来说并不觉得疯狂,这有意义吗?但我不知道如何开始ggplot2同意我的观点。
我的偏好是让箱形图沿 X 轴均匀分布,但如果我需要从连续的轴开始,并且让各组在 X 轴上占据成比例的空间,那么我会满足于此(可能使用记录轴以防止下部狭窄的组被完全压碎。
这应该作为示例数据:
df <- structure(list(usage = c(1L, 4L, 2L, 5L, 4L, 1L, 2L, 98L, 9L,
4L, 6L, 6L, 1L, 2L, 2L, 2L, 3L, 2L, 5L, 1L), allowed = c(2, 20,
3, 3, 5, 5, 1, 1, 1, 5, 10, 5, 7, 12, 2, 5, 23, 10, 5, 2), id = c(1055L,
2155L, 6637L, …Run Code Online (Sandbox Code Playgroud) 有一个线程有关于这个主题的许多答案(在 Chart.js 中的条形顶部显示值),但都是关于版本 2.x
getDatasetMeta() 已弃用: https://www.chartjs.org/docs/3.0.2/getting-started/v3-migration.html
“datalabels”插件尚未移植到 3.x: https: //github.com/chartjs/chartjs-plugin-datalabels
您找到任何有效的解决方案了吗?如何将数据值显示在垂直条形图的顶部(或水平条形图的旁边)?
import pandas as pd
from pandas import Timestamp
import plotly.express as px
df = pd.DataFrame({'continent': {127: 'South America',
128: 'South America',
129: 'South America',
130: 'South America',
131: 'South America'},
'date': {127: Timestamp('2021-03-01 00:00:00'),
128: Timestamp('2021-03-26 00:00:00'),
129: Timestamp('2021-04-20 00:00:00'),
130: Timestamp('2021-05-15 00:00:00'),
131: Timestamp('2021-06-09 00:00:00')},
'total_cases': {127: 20465329.0,
128: 23470911.0,
129: 26544779.0,
130: 29891133.0,
131: 30534015.0}})
fig = px.bar(df, x='continent', y='total_cases', animation_frame=df.date.astype(str),
# hover_data={'animation_frame':False,
# 'continent':False,
# }
)
fig.update_traces(hovertemplate='Date:%{animation_frame}<br>Total Cases:%{y}')
Run Code Online (Sandbox Code Playgroud)
运行上述代码会输出带有动画滑块的条形图。仅当您不移动滑块时,对悬停标签所做的更改才可见。一旦你这样做并且框架发生变化,默认的plotly.express悬停标签就会重新出现(我认为是因为跟踪更新了)。有什么解决办法吗?
编辑:添加 GIF 来显示问题
我正在使用 R 编程语言。最近,我学习了如何使用 ggplot 库“绘制”水平线和垂直线:
library(ggplot2)
# Simple scatter plot
sp <- ggplot(data=mtcars, aes(x=wt, y=mpg)) + geom_point()
# Add horizontal line at y = 2O
a = sp + geom_hline(yintercept=20)
b = sp + geom_vline(xintercept = 3)
Run Code Online (Sandbox Code Playgroud)
现在,我尝试将这些陈述结合在一起 - 例如:
c = sp + geom_hline(yintercept=20) + geom_hline(yintercept=15) + geom_vline(xintercept = 3) +
geom_vline(xintercept = 5) + geom_vline(xintercept = 6) + geom_hline(yintercept=35)
Run Code Online (Sandbox Code Playgroud)
问题:我正在尝试修改上面的图,使其看起来像这样:
有人可以告诉我该怎么做吗?或者您是否必须手动将此图导出到 Microsoft Paint 中并在那里进行更改?
谢谢