μν μ°¨νΈμ μ΄κΈ° λ°λͺ¨ λ²μ μ μ£Όμ΄μ§ ν¬κΈ°λ‘ νμλ©λλ€.
"μ 체 νλ©΄ 보기" / "μ 체 νλ©΄ μ’ λ£"λ₯Ό μ€νν ν μ°¨νΈ ν¬κΈ°κ° λ³κ²½λ¨(μΆμ λλ μ¦κ°)μ μ μνμμμ€.
https://www.highcharts.com/demo/pie-basic
https://jsfiddle.net/BlackLabel/weo19uvy/
νμ΄μ°¨νΈ v8.0.4
ν¬λ‘¬ 80.0.3987.149
μ°Έκ³ λ‘ @raf18seb
@madepietμ μ κ³ ν΄ μ£Όμ
μ κ°μ¬ν©λλ€.
μ΄κ²μ μλ €μ§ λ¬Έμ μ
λλ€. μ 체 νλ©΄μ μ’
λ£ν ν μΌλΆ λΈλΌμ°μ λ μλ λμ΄(μ 체 νλ©΄μ νΈμΆνκΈ° μ μ λμ΄)λ₯Ό 볡μνμ§λ§ λ€λ₯Έ λΈλΌμ°μ λ κ·Έλ μ§ μμ΅λλ€.
ν΄κ²° λ°©λ²:
컨ν
μ΄λμ λμ΄λ₯Ό μ격νκ² μ μν μ μμ§λ§( μ
λ°μ΄νΈλ λ°λͺ¨ μ°Έμ‘° ) μΌλΆ λΈλΌμ°μ (μ: IE11)λ μ 체 νλ©΄ λͺ¨λμ 100% λμ΄μμ 컨ν
μ΄λλ₯Ό νμνμ§ μκ³ μ μλ λμ΄λ‘λ§ νμν©λλ€(μ€μ λ‘ μ 체 νλ©΄μ΄ μλ). .
μλ λμ΄λ₯Ό κΈ°μ΅νκ³ μ 체 νλ©΄μ μ’ λ£ν ν 볡μνλ λ Όλ¦¬λ₯Ό μμ±ν μ μμ΅λλ€. @sebastianbochan μ΄λ»κ² μκ°νμΈμ?
ν΄κ²° λ°©λ²μΌλ‘ CSS μ€νμΌμμ λλΉ/λμ΄λ₯Ό μ€μ ν μ μμ΅λλ€. (νΌμΌνΈκ° μλ px κ°μμλ§ μλν©λλ€).
λ°λͺ¨:
@raf18seb μ’μ μκ°μ΄κ³ κ·Έκ²λ 그리 볡μ‘ν μ루μ
μ μλλΌκ³ μκ°ν©λλ€. κ·Έλ¬λ (μ 체 νλ©΄ μ’
λ£ ν) chart.setSize
κ° μ¬λ¬ λ² νΈμΆλμ§ μμλμ§ νμΈν΄μΌ ν©λλ€. μ°λ¦¬λ λ§μ μ¬ λ λλ§μ νΌνκ³ μΆμ΅λλ€.
μλ
νμΈμ, μ°λ¦¬λ κΊΎμμ ν μ°¨νΈ μ¬μ©μμ μ΄κ²μ λ³΄κ³ μμΌλ©° μ€μ λ‘ μλμ λ°λͺ¨μμ λ°μνκ³ μμ΅λλ€.
https://www.highcharts.com/demo/line-basic
μ°¨νΈλ 컨ν μ΄λμμ μλ΅ν΄μΌ νλ―λ‘ λλΉ/λμ΄λ₯Ό μ μ μΌλ‘ μ€μ ν μ μμ΅λλ€.
λΈλΌμ°μ λ° μ΄μ 체μ
https://www.whatsmybrowser.org/b/D78K2
컨ν
μ΄λμ κ³ μ λμ΄λ₯Ό μ€μ ν νμλ μ¬μ ν λ¬Έμ κ° ν΄κ²°λμ§ μμ΅λλ€. λ¬Έμ λ 컨ν
μ΄λ λμ΄κ° μλλΌ SVG λμ΄κ° μμ λμ§ μμ κ²μ
λλ€.
첨λΆνμΌμ μ°Έμ‘°νμΈμ
μΌλΆ μ μ²΄κ° μ΄μ λν μ λ ₯μ μ 곡ν μ μμ΅λκΉ?
@v-abkhot
μ κ²μλ¬Όμ ν΄κ²° λ°©λ²μ μ΄λ»μ΅λκΉ?
μ΄κ²μ λλ§λ³΄κ³ ν μλνμ§ μμ΅λλ€
λ¬Έμ λ 컨ν μ΄λ λμ΄μ κ΄ν κ²μ΄ μλκΈ° λλ¬Έμ svgμ κ΄ν κ²μ λλ€. ν€
jsfiddle.net μμ μ¬νν λΌμ΄λΈ λ°λͺ¨λ₯Ό 곡μ νμΈμ.
ν΄λΉ 컨ν μ΄λμ κ³ μ λλΉλ₯Ό μΆκ°ν ν μ΄λ€ μΌμ΄ μΌμ΄λκ³ μλμ§μ λν μ€ν¬λ¦°μ·μ μ΄λ―Έ 곡μ νμ΅λλ€.
λ¬Έμ λ₯Ό νμΈνμ΅λλ€... svg λμ΄μ λ¬Έμ κ° μμ΅λλ€.
μμ ν΄μΌ ν©λλ€.
κ·Έλμ μ΄λ€ μ μ²΄κ° μ€μ λ‘ μ΄κ²μ μ‘°μ¬ν μ μμ΅λκΉ?
μλ
νμΈμ @v-abkhotλ,
μ°¨νΈ μ΅μ
, CSS μ€νμΌ λ±κ³Ό κ°μ μ λ³΄κ° λλ½λμ΄ μ€ν¬λ¦°μ·μ ν΅ν΄ λ¬Έμ λ₯Ό μ¬νν μ μμ΅λλ€. μΆκ° λλ²κΉ
μ μν΄ λ¨μνλ μ½λλ‘ μ΄ λ°λͺ¨λ₯Ό μ
λ°μ΄νΈνμμμ€: https://jsfiddle.net/BlackLabel/0t6necqd/ .
μΆμ . λ무 λ§μ 짧μ λ©μμ§λ₯Ό 보λ΄λ λμ νΈμ§μ μ¬μ©νμμμ€.
https://codepen.io/v-abkhot/pen/vYNQxQg?editors=1100
μ΄ λ λ²μ§Έ κ·Έλνμμ μ 체 νλ©΄μΌλ‘ μ΄κ³ μ μμΌλ‘ λκ°λ©΄ ν¬κΈ°κ° μμ λ©λλ€.
컨ν μ΄λμ κ³ μ λμ΄λ₯Ό μ μ©ν ν
μ νλ©΄μ SVGλ‘ μλ μ€μ λ λμ΄κ° μμμ μ μ μμ΅λλ€.
λλ λ°μ λνΌλ₯Ό μ¬μ©νκ³ μμ΅λλ€
μλ
νμΈμ @v-abkhotλ,
github λ¬Έμ κ° μ΄λ»κ² μλνλμ§ μ€λͺ
νκ² μ΅λλ€.
@raf18seb μμ μ€μΈ hichart-reactμμ μλνμ§ μμ΅λλ€.
μλ νμΈμ @v-abkhot, μ°¨νΈλ₯Ό λλ²κ·Έν μ μλλ‘ λ¨μνλ μ¨λΌμΈ λ°λͺ¨λ₯Ό μ 곡ν μ μμ΅λκΉ?
λΉμ μ΄ μ 곡ν https://codepen.io/v-abkhot/pen/vYNQxQg?editors=1100 μ 2κ°μ μ°¨νΈκ° μλ λ°λͺ¨μΌ λΏμ λλ€. 첫 λ²μ§Έ 컨ν μ΄λμλ λμ΄λ₯Ό μ€μ νμ§λ§ λ λ²μ§Έ 컨ν μ΄λμλ λμ΄λ₯Ό μ€μ νμ§ μμμ΅λλ€. μ΄κ²μ΄ ν΄κ²° λ°©λ²μ΄ λ λ²μ§Έ μ°¨νΈμμ μλνμ§ μλ μ΄μ μ λλ€.
μ€μ μ μλνμμμ€
#container, #container1 {
height: 400px;
}
μλ νμΈμ @raf18seb μ λ λμ΄λ₯Ό μ€μ νλ©΄ μ§μ highchartμ© μ½λ νμ μΆκ°νμ΅λλ€. κ·Έλ¬λ©΄ μ λλ‘ μλνμ§λ§ μμ μ€ν¬λ¦°μ· λ¬Έμ μμ svg λμ΄μ κ°μ΄ hichart-react-officialsμμ μ¬μ©νλ©΄
μλ νμΈμ @raf18seb hichart-react-officialsμ λμΌνκ² μλν΄ μ£Όμκ² μ΅λκΉ?
@v-abkhot μ΄μ κΈμ μΆκ°νκ³ μΆμ λ΄μ©μ΄ μμΌλ©΄ μμ λ²νΌμ λλ¬μ£ΌμΈμ. λ§μ κ²μλ¬Όμ μμ±νλ©΄ GitHubκ° μ§μ λΆν΄μ§λλ€.
highcharts-react-official
λνΌλ‘ ν
μ€νΈνλλ° ν΄κ²° λ°©λ²μ΄ μ λλ‘ μλν©λλ€. containerProps
κ΅¬μ± μμ μμ±μ μ¬μ©νμ¬ λ μ°¨νΈ κ΅¬μ± μμμ μ€νμΌμ μ μνμ΅λκΉ?
λ¬Έμ: https://github.com/highcharts/highcharts-react#options -details
μ΄κ²μ λλ₯Ό μν΄ μ μλν©λλ€.
render() {
return (
<div>
<div>
<HighchartsReact
constructorType={"chart"}
ref={this.chartComponent}
highcharts={Highcharts}
options={this.state.options}
containerProps = {{ style: {height: '400px'} }}
/>
</div>
<div>
<HighchartsReact
constructorType={"chart"}
ref={this.chartComponent}
highcharts={Highcharts}
options={this.state.options}
containerProps = {{ style: {height: '400px'} }}
/>
</div>
</div>
);
}
μΌ μ΄κ² ν¨κ³Όκ° μμ΄ μ λ§ κ³ λ§μ
μ λ κ°μ λ¬Έμ κ° λ°μν©λλ€. λ€μ μ€ν¬λ¦°μ·μ νμΈνμΈμ.
μ΅μ
ν΄λ¦ μ (μ 체νλ©΄μΌλ‘ 보기)
https://snipboard.io/WRNQSZ.jpg
μ΅μ
ν΄λ¦ ν(μ 체νλ©΄ μ’
λ£)
https://snipboard.io/7HY3Js.jpg
μ μ’ λμμ£Όμκ² μ΄μ?
μλ νμΈμ @dharmatv λ, μμ λκΈμμ μ루μ μ μλν΄ λ³΄μ ¨μ΅λκΉ?
μλ νμΈμ @dharmatv λ, μμ λκΈμμ μ루μ μ μλν΄ λ³΄μ ¨μ΅λκΉ?
lol κ·Έκ²μ "μ루μ "μ΄λΌκ³ λΆλ₯΄λ μ½κ°μ μ€νΈλ μΉμ λλ€.
곡μ μμ μ΄ κ°λ₯ν κΉμ?
λ΄κ° μμ νκ³ μλ μ±μμ μ°¨νΈλ νλ©΄ ν¬κΈ°μ λμ μΌλ‘ λ³κ²½λλ νμ λͺ¨μμ λ°λΌ λ¬λΌμ§κΈ° λλ¬Έμ κ³ μ μΉμλ₯Ό κ°μ§ μ μμ΅λλ€. κΈ°λ³Έμ μΌλ‘ μ°¨νΈλ νμ΄μ§ νλ¨μ μμΌλ©° λλ¨Έμ§ κ³΅κ°μ μ°¨μ§ν©λλ€.
@raf18seb , CSS μ루μ
μ μλνμ§λ§ μλνμ§ μμκ³ λλ¨Έμ§ μ루μ
μ react-jsμ κ΄λ ¨μ΄ μμ§λ§ Vue jsμμ μμ΅λλ€. μ΄μ λν ν΄κ²°μ±
μ μ κ³΅ν΄ μ£Όμκ² μ΅λκΉ?
@dolanmiu λΉμ μ΄ μ³μμ΅λλ€.
μλ νμΈμ Highcharts ν( @raf18seb ),
μκ°μ λ΄μ΄ μ΄ λ²κ·Έλ₯Ό ν΄κ²°ν΄ μ£Όμκ² μ΅λκΉ?
λ²κ·Έκ° λ³΄κ³ λ μ§ 1λ
μ΄ λμμ΅λλ€.
https://www.highcharts.com/forum/viewtopic.php?t=43608
미리 κ°μ¬λ립λλ€.
μλ ! μμΈν μ΄ν΄λ³΄κ³ λ©°μΉ λ΄λ‘ μνλ₯Ό μλ € λλ¦¬κ² μ΅λλ€.
Here's a workaround snippet working on all browsers except IE. I'll investigate IE further
νΈμ§ : screen.height
λ IEμμ μ λλ‘ μλνλ―λ‘ μ μΈλ λΈλΌμ°μ κ° μμ΅λλ€. https://jsfiddle.net/BlackLabel/6vpgLje5/
(function(H) {
var addEvent = H.addEvent,
isMS = H.isMS,
wrap = H.wrap;
H.Fullscreen.prototype.open = function() {
var fullscreen = this,
chart = fullscreen.chart,
originalHeight = chart.chartHeight;
chart.setSize(void 0, screen.height, false);
fullscreen.originalHeight = originalHeight;
// Handle exitFullscreen() method when user clicks 'Escape' button.
if (fullscreen.browserProps) {
fullscreen.unbindFullscreenEvent = addEvent(chart.container.ownerDocument, // chart's document
fullscreen.browserProps.fullscreenChange,
function() {
// Handle lack of async of browser's fullScreenChange event.
if (fullscreen.isOpen) {
fullscreen.isOpen = false;
fullscreen.close();
chart.setSize(void 0, originalHeight, false);
} else {
fullscreen.isOpen = true;
fullscreen.setButtonText();
}
});
var promise = chart.renderTo[fullscreen.browserProps.requestFullscreen]();
if (promise) {
// No dot notation because of IE8 compatibility
promise['catch'](function() {
alert( // eslint-disable-line no-alert
'Full screen is not supported inside a frame.');
});
}
addEvent(chart, 'destroy', fullscreen.unbindFullscreenEvent);
}
};
wrap(H.Fullscreen.prototype, 'close', function(proceed) {
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
var fullscreen = this;
fullscreen.chart.setSize(void 0, fullscreen.originalHeight, false);
});
})(Highcharts)
μλ νμΈμ @raf18seb , μ΄λ»κ² λ°μμμ μ΄ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©ν μ μμ΅λκΉ?
@haor3 - Highchartsλ₯Ό κ°μ Έμ¨ μ§ν:
import Highcharts from 'highcharts';
(function(H) {
...
})(Highcharts);
@pawelfus κ°μ¬νμ§λ§ λ¬Έμ λ μ¬μ ν λ°μν©λλ€
@haor3 λ λ§μ μ 보λ₯Ό μ 곡ν μ μμ΅λκΉ? μ νν 무μμ΄ λΉμ μκ² ν¨κ³Όκ° μμ΅λκΉ? μ ν¬κ° μμΈν μ΄ν΄λ³Ό μ μλλ‘ κ·νμ μ¬λ‘λ₯Ό 보μ¬μ£Όλ μ¨λΌμΈ λ°λͺ¨λ₯Ό μ κ³΅ν΄ μ£Όμκ² μ΅λκΉ? κ°μ¬ ν΄μ!
@raf18seb κ·νμ λͺ¨λ²μ κ°μ¬λ립λλ€. μ μκ² ν¨κ³Όμ μ λλ€!
λλ μ½κ°μ λ³κ²½μνκ³ μ£Όλ‘ μ΄κ²μ μΆκ°ν©λλ€.
// <strong i="8">@see</strong> https://github.com/highcharts/highcharts/issues/13220
chart.pointer.chartPosition = null;
μ 체 νλ©΄ λͺ¨λλ‘ λ€μ΄κ° ν λ§μ°μ€ μμΉμ λ¬Έμ κ° μκΈ° λλ¬Έμ
λλ€.
λ΄ λ²μ :
export const fullscreenEventListener = (H) => {
if (!H.Fullscreen) {
return;
}
const { addEvent, wrap } = H;
H.Fullscreen.prototype.open = function () {
const fullscreen = this;
const { chart } = fullscreen;
const originalWidth = chart.chartWidth;
const originalHeight = chart.chartHeight;
// eslint-disable-next-line no-restricted-globals
chart.setSize(screen.width, screen.height, false);
// <strong i="13">@see</strong> https://github.com/highcharts/highcharts/issues/13220
chart.pointer.chartPosition = null;
fullscreen.originalWidth = originalWidth;
fullscreen.originalHeight = originalHeight;
// Handle exitFullscreen() method when user clicks 'Escape' button.
if (fullscreen.browserProps) {
fullscreen.unbindFullscreenEvent = addEvent(chart.container.ownerDocument, // chart's document
fullscreen.browserProps.fullscreenChange,
() => {
// Handle lack of async of browser's fullScreenChange event.
if (fullscreen.isOpen) {
fullscreen.isOpen = false;
fullscreen.close();
chart.setSize(originalWidth, originalHeight, false);
chart.pointer.chartPosition = null;
} else {
fullscreen.isOpen = true;
fullscreen.setButtonText();
}
});
const promise = chart.renderTo[fullscreen.browserProps.requestFullscreen]();
if (promise) {
// No dot notation because of IE8 compatibility
promise['catch'](() => {
// eslint-disable-next-line no-alert
alert('Full screen is not supported inside a frame.');
});
}
addEvent(chart, 'destroy', fullscreen.unbindFullscreenEvent);
}
};
wrap(H.Fullscreen.prototype, 'close', function (proceed) {
// eslint-disable-next-line prefer-rest-params
proceed.apply(this, Array.prototype.slice.call(arguments, 1));
const fullscreen = this;
fullscreen.chart.setSize(fullscreen.originalWidth, fullscreen.originalHeight, false);
fullscreen.chart.pointer.chartPosition = null;
});
};
κ·Έλ¦¬κ³ ν κ°μ§ λ λ§μλλ¦¬κ³ μΆμ κ²μ μ 체 νλ©΄ λͺ¨λμμ μ°μ λ λ§μ°μ€ μμΉ λ¬Έμ μ λν ν΄κ²° λ°©λ²μ λλ€.
λλμ΄ λ¬Έμ λ₯Ό λ€μκ³Ό κ°μ΄ μμ νλ€κ³ μκ°νμ΅λλ€.
// <strong i="9">@see</strong> https://github.com/highcharts/highcharts/issues/13220
chart.pointer.chartPosition = null;
κ·Έλ¬λ μ΄ μ루μ
μ΄ μ°μ λμμ μλνμ§ μλλ€λ κ²μ μμμ΅λλ€.
λΆμ°μ κ²½μ° λ€μμ μΆκ°ν΄μΌ ν©λλ€.
Highcharts.Pointer.prototype.getChartPosition = function () {
const { chart } = this;
const { container } = chart;
// eslint-disable-next-line no-return-assign
return (this.chartPosition = Highcharts.offset(container));
};
κ°μ₯ μ μ©ν λκΈ
μλ ! μμΈν μ΄ν΄λ³΄κ³ λ©°μΉ λ΄λ‘ μνλ₯Ό μλ € λλ¦¬κ² μ΅λλ€.